結合使用saiku、mondrian workbentch創建多維查詢報表

一、簡介

前幾篇博客已經介紹了saiku、mondrian、MDX和模式文件他們之間的關係,那麼如何將它們串聯起來,供產品人員使用哪?下面我們一步一步的實現html

二、創建數據表

建表語句參考:http://www.cnblogs.com/liqiu/p/5202708.html數據結構

模式圖以下:ide

這是一個典型的事實表+維度表的星型數據結構!spa

三、創建模式文件

這裏就不說具體細節啦,直接給出xml文件內容,感興趣的同窗能夠直接載入進去便可code

<Schema name="SaleSchema">
  <Cube name="SalesCube" visible="true" cache="true" enabled="true">
    <Table name="sale" schema="public">
    </Table>
    <Dimension type="StandardDimension" visible="true" foreignKey="cusid" highCardinality="false" name="dimCustomer">
      <Hierarchy visible="true" hasAll="true" allMemberName="allCustomer" primaryKey="cusid">
        <Table name="customer" schema="public">
        </Table>
        <Level name="gender" visible="true" column="gender" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
        </Level>
      </Hierarchy>
    </Dimension>
    <Dimension type="StandardDimension" visible="true" foreignKey="proid" highCardinality="false" name="dimProductType">
      <Hierarchy visible="true" hasAll="true" allMemberName="allProduct" allMemberCaption="allProductTitle" primaryKey="proid" primaryKeyTable="product">
        <Join leftKey="proid" rightKey="protypeid">
          <Table name="product" schema="public">
          </Table>
          <Table name="producttype" schema="public">
          </Table>
        </Join>
        <Level name="productId" visible="true" table="product" column="proid" nameColumn="proname" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
        </Level>
        <Level name="productTypeId" visible="true" table="producttype" column="protypeid" nameColumn="protypename" type="String" uniqueMembers="true" levelType="Regular" hideMemberIf="Never">
        </Level>
      </Hierarchy>
    </Dimension>
    <Measure name="saleNumber" column="num" aggregator="sum" caption="NumTitle" visible="true">
    </Measure>
    <Measure name="saleAmount" aggregator="sum" caption="allSaleTitle" visible="true">
      <MeasureExpression>
        <SQL dialect="generic">
          <![CDATA[(unitprice*num)]]>
        </SQL>
      </MeasureExpression>
    </Measure>
    <CalculatedMember name="avgPrice" caption="avgPriceTitle" dimension="Measures" visible="true">
      <Formula>
        <![CDATA[[Measures].saleAmount/[Measures].saleNumber]]>
      </Formula>
      <CalculatedMemberProperty name="formatString" value="$#,##0.00">
      </CalculatedMemberProperty>
    </CalculatedMember>
  </Cube>
</Schema>

四、查詢數據

寫以下MDX語句驗證數據準確性orm

select
       {[Measures].saleNumber,[Measures].saleAmount,[Measures].avgPrice}
on columns,
       {([dimProductType].[allProduct],[dimCustomer].[allCustomer])}
on rows
from [salesCube]

結果以下:xml

五、上傳模式文件

打開saiku,上傳模式文件便可htm

若是如圖:blog

相關文章
相關標籤/搜索