淺析 mondrian 模式文件 Schema

一、前言

前面幾篇文章一經介紹過saiku、模式文件和MDX的關係。通俗點說模式文件(Schema)就是一個xml,裏面定義了一個虛擬立方體,共MDX查詢語言使用。html

二、模式文件

Schema 最頂層ide

Cube 立方體,以事實表爲中心,圍繞若干維度表spa

Table 事實表code

Dimension 維度xml

Hierarchy 維度層次htm

Level 一個層次blog

Measure 度量it

事例:

建立原始數據表,這些表參考:http://www.cnblogs.com/liqiu/p/5202708.html 裏面的建表語句!io

根據建立的數據表,我寫了一個模式文件:class

<Schema name="SaleSchema">
  <Cube name="SalesCube">
    <Table name="sale">
    </Table>
    <Dimension type="StandardDimension" visible="true" foreignKey="cusid" highCardinality="false" name="dimCustomer">
      <Hierarchy visible="true" hasAll="true" allMemberName="allCustomer">
        <Table name="customer">
        </Table>
        <Level name="gender" visible="true" column="gender" type="String" uniqueMembers="false" 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>
  </Cube>
</Schema>

這裏面使用了兩張表,事實表:sale和消費者表customer,其中sale表裏面的cusid是customer表的主鍵

三、Table

這裏指的是立方體裏面的事實表,sale

四、維度

這裏僅僅聲明瞭一個維度,消費者維度

    <Dimension type="StandardDimension" visible="true" foreignKey="cusid" highCardinality="false" name="dimCustomer">
      <Hierarchy visible="true" hasAll="true" allMemberName="allCustomer">
        <Table name="customer">
        </Table>
        <Level name="gender" visible="true" column="gender" type="String" uniqueMembers="false" levelType="Regular" hideMemberIf="Never">
        </Level>
      </Hierarchy>
    </Dimension>

裏面有個維度層次,裏面僅僅包含一個層次,性別:gender

五、指標

    <Measure name="saleNumber" column="num" aggregator="sum" caption="NumTitle" visible="true">
    </Measure>

是銷量指標,另一個不作太多解釋了

六、執行:

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

七、結果

相關文章
相關標籤/搜索