Mondrian-Schema结构梳理文档
注意:主要对mondrian下的foodmart4.xml 对属性和结构整理梳理。针对schema3.0与schema4.0的区别。Foodmart4.xml结构主要以schema4.0为主构建的,schema3.0可以参考workbench下的foodmart.xml结构。
1.schema头部标识
在构建schem4.0时必须标识metamodelVersion='4.0',否则按照schem3.0识别操作。
2.PhysicalSchema 物理schema定义
注意:物理schema里面主要定义一些实时表和维表,以及关联关系,以及格式化等进行初始化操作工作。里面使用的实时表和维表必须在这块定义,否则报错。
下面详细对物理schema内容梳理分析,如图:
- 定义employee表和posistion表并指定各自的主键信息
- 通过link属性对employee表和posistion表进行关联操作,source指的是源表(主表),target指的是目标表(外表)
- 通过计算列来操作自己想要的结果数据,ConumnDefs是关键属性。其中CalculatedColumnDef的name属性和你创建的计算列也就是度量里面的column值保持一致。如图:
- 如果是格式化操作维度,通过nameColumn来进行关联操作。如图:
a.在物理schema定义格式化操作,name=”full_name”
b.在维表中进行引用操作,nameColumn=”full_name”
3.cube里面的实时表和维表进行梳理
A、维度
下面主要对单个cube进行结果分析,如图:
Cube主要有两大部分组成,维度集合和度量组。Dimensions和MeasureGroups。
- Dimension中的name属性相当是id作用,key表示主键的概念
- Attributes属性集合,充当维表整个字段的概念。
- Attribute 相当是对每个字段表示作用,其中包括name属性描述,table对应物理表名称,keyColumn对应物理表中的字段名称,
- Hierarchies层次集合,Hierarchy层级的name名称,allMemberName表示全部成员名称,Level表示级别,attribute对应Attribute 的name属性。
- Datatype 数据类型,默认类型是String
- orderByColumn定义成员顺序的列。如果未指定,则使用属性键。
- Dimension维表中还有一种是引入共享维度概念,通过source来使用。
- 其中雪花模型的使用,在foodmart4中类似维表中直接嵌入该维表的属性即可,如图:
前提是维表和维表的关系,必须在物理schema中描述清楚,并定义好才行。
2.度量
度量这块主要描述该维表的所有度量,以及实时表和维表所关联的外键描述。如图:
- 首先是MeasureGroups度量集合概念,这块和维度集合差不多是一个概念,都是表示描述相同维度或度量的总成。
- MeasureGroup度量组包括name属性,以及table物理表名称
- Measure度量主要描述物理字段属性,name名称,colum物理字段名称,aggregator聚合函数,formatString计算结果的显示格式。其中聚合函数包括允许的值是“sum”,“count”,“min”,“max”,“avg”和“distinct-count”,格式化。
- Datatype属性,数据类型,默认值是:Numeric,这块可以省略。
- DimensionLinks度量链接组属性,主要描述实时表和维表之前的关系。其中使用ForeignKeyLink来具体描述实时表和那些维表存在主外键关系,dimension表示维表的名称,和维表(Dimension)中的name对应。foreignKeyColumn表示所对应的外键值。(这块也就是星星模型的描述关系)
- 计算成员也是在度量组这块来完成的,通过CalculatedMembers计算成员组来描述各各计算成员的属性值,通过CalculatedMember来具体实现,name表示计算成员的起个名称,dimension='Measures'这块是默认值,formatString计算结果的显示格式,formula公式书写位置。这块的公式主要是通过mdx语句来实现的。
- 计算成员可以通过层级来实现,hierarchy里面使用mdx语法实现,Formula公式也是mdx语句来实现的。