浅析 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]

七、结果

相关文章
相关标签/搜索