浅析 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、结果

posted @   李秋  阅读(2613)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2013-02-21 MOUNT详解
点击右上角即可分享
微信分享提示