zoukankan      html  css  js  c++  java
  • 浅析 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、结果

  • 相关阅读:
    CentOS 7部署KVM之三基本管理
    CentOS 7部署KVM之二安装配置
    CentOS 7部署KVM之一架构介绍
    DOM 事件流
    渐进增强与优雅降级
    (三)跟我一起玩Linux网络服务:DHCP服务配置之主服务器配置
    (二)跟我一起玩Linux网络服务:BIND的自动部署(附上完整的代码)
    责任链模式--行为模式
    装饰模式--- 结构型模式
    elastic-job+zookeeper实现分布式定时任务调度的使用(springboot版本)
  • 原文地址:https://www.cnblogs.com/liqiu/p/5205183.html
Copyright © 2011-2022 走看看