• 浅析 mondrian 模式文件 Schema


    1、前言

    前面几篇文章一经介绍过saiku、模式文件和MDX的关系。通俗点说模式文件(Schema)就是一个xml,里面定义了一个虚拟立方体,共MDX查询语言使用。

    2、模式文件

    Schema 最顶层

    Cube 立方体,以事实表为中心,围绕若干维度表

    Table 事实表

    Dimension 维度

    Hierarchy 维度层次

    Level 一个层次

    Measure 度量

    事例:

    创建原始数据表,这些表参考:http://www.cnblogs.com/liqiu/p/5202708.html 里面的建表语句!

    根据创建的数据表,我写了一个模式文件:

    <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表的主键

    3、Table

    这里指的是立方体里面的事实表,sale

    4、维度

    这里仅仅声明了一个维度,消费者维度

        <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

    5、指标

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

    是销量指标,另外一个不做太多解释了

    6、执行:

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

    7、结果

  • 相关阅读:
    JAVA---JDK环境变量的配置
    “==” 与“equals(Object)”区别
    js替换字符串中所有斜杠
    uploadify学习笔记
    VBA学习笔记
    浮动导航条的实现
    canvas初识笔记
    EntityFramework存储过程的返回类型
    CSS及html的特殊字符表
    DIV六种实现元素水平居中
  • 原文地址:https://www.cnblogs.com/liqiu/p/5205183.html
Copyright © 2020-2023  润新知