设计一个模型文件的基本步骤如下:
新建数据库连接。
新建立方体,添加事实表。事实表是整个立方体的核心,它包含了用户定义度量的字段和所有维度的外键。为了提高查询效率在事实表中添加聚集表。
新建维度,选择外键和类型。维度的类型有两种:标准维度(StandardDimension)和时间维度(TimeDimension),默认为标准维度。
添加维度表:一个维度表对应一个层次,维度表的主键必须是事实表的外键。
添加级别:级别的数据库表默认的是维度表,也可另外指定。级别的值对应于该表中的某一列。
添加度量,度量是用户重点关注的业务数据,与事实表中的某一列对应。mondrian提供了几个默认的度量计算函数,比如求和,最大值等,也可自定义计算函数。
下面具体演示了一个简单的OLAP模型的设计过程::
建立数据库连接:打开多维模型设计器,单击【选项】->【连接】,如下图所示:
弹出“数据库连接”窗口,配置相关属性项,单击【测试】按钮,弹出对话框,提示“正确连接到数据库…”,则数据库连接设置成功,如下图所示:
新建模型:单击【文件】->【新建模型文件】->【模型】,如下图所示:
-
模型的各项属性设置及其含义如下表所示:
1. 新建立方体:选中模型,单击右键,选中【添加立方体】,如下图所示:
或者点击工具栏上的立方体图标
都可以添加新的立方体,如下图所示:2. 添加事实表:选中立方体,单击右键,选中【添加表】,如下图所示:
事实表属性设置及其含义如下表:
添加维度:选中立方体,单击右键,选中【添加维度】,如下图所示:
或者点击工具栏上的添加维度
其中外键是事实表的外键。新添加的维度是一个时间维度,将名称设为Time。 【类型】必须选择为【TimeDimension】。如果不是时间维度则选择【StandardDimension】,如下图所示:维度的设置属性及其含义,如下表所示:
4. 添加维度表:选中维度中的层次,单击右键,选中【添加表】,如下图所示
在右侧的【名称】的下拉框中 选择表"d_data",该表的主键对应维度中所选的外键,如下图所示:
维度表属性设置及其含义如下表:
5. 设置层次:最简单的方法为,删掉系统自动生成的层次名,选择【主键】,该主键是维度表的主键,如下图所示:
层次的各项设置属性的含义,如下表:
- 添加级别:选中层级,单击右键,选中【添加级别】,如下图所示:
或者点击工具栏上添加级别图标
添加新的级别,如下图所示:级别的各项属性的设置及其含义如下表:
表 1-7 级别属性设置表格
属性名称 含义 名称 级别名称 描述 级别描述 数据库表 该级别使用的数据库表表名,必须与层次中定义的数据库表相同 值列列名 该级别的关键字 名称列 用于在查询结果中显示内容的列,如果不定义就显示值列列名 父列 在具有父子关系的立方体中定义的父列名称 顶级父成员的值 在一个由父子关系的层次中,当前级别处于顶级,我们需要将顶级的数据取出来,这里只得是位于顶级的父成员的值,有些数据库 排序列 定义该级别上的成员显示顺序,如果不指定就采用值列的值 数据类型 数据类型,下拉菜单中有可选的类型。 成员唯一 该属性用于优化产生的SQL,如果你知道这个恶级别和其父级别交叉后的值或者是维度表中给定的级别所有的值是唯一的,那么久可以设置该值为true,否则为false,在顶层的级别中,一直都应该设置为true,因为这里没有父级别。 级别类型 级别类型,默认为regular(正常),只用于标准维度。如果维度定义的是时间维度,则需要选择其他类型。 是否隐藏成员 什么时候隐藏成员 可能的行数 该属性可以用来提高性能,可以通过指定一个数值以减少判断级别,层次,维度技术的时间,该属性在通过使用XMLA连接mondrian很有用 标题 标题 标题列 表中用来显示标题的列 标题格式 对标题进行格式化 按同样的方式建立另外一个级别“经销商”如下图所示:
注:如果维度表只有一张,则可以不选择【数据库表】,否则需要指定。
7. 添加度量,选中立方体,单击右键,选中【添加度量】,如下图所示:
或者点击工具栏上的添加度量图标
加度量,如下图所示:度量的各项属性设置及其含义如下表:
表 1-8 度量属性设置表格
属性名称 含义 名称 度量的名称。 描述 对该度量的描述。 计算函数 一般包括”sum”,”count”,”mix”,”max”,”avg”,”distinct count”,”distinct-count”.其中“distinct-count”只能定义在具有父子层次关系的立方体中。 值列列名 是事实表中的一列,其值用于计算函数计算对应的度量值 输出结果的格式 定义在输出端打印出结果的格式,例如 ###,##.00 是否可见 默认为ture 其值对MDX查询没有影响 数据类型/entry> 结果在mondrian 缓存中存储的数据类型 标题格式 标题格式 标题 标题 以同样的方式在立方体外添加另外一个共享维度“市场”,如下所示:
a)添加“市场”维度
b)添加维度表“CUSTOMER_W_TER”
c)设置层次
d)添加级别“地区”
e)添加级别“国家”
添加维度引用:添加维度引用之前需要先确保已生成了共享维度。共享维度不属于任何 立方体的维度,他的父节点是模型文件。而且维度引用的名称要与共享维度的名称一致,如下图所示:
维度引用设置属性及其含义如下表所示:
保存模型,单击【文件】->【新建】->【MDX查询】,输入MDX语句,验证模型文件是否设计正确,如下图所示:
如果能显示正确的结果,则表示模型文件的设计是正确的。MDX查询语句要根据具体的数据库来定,示例查询语句: