Schema:
Schema 定义了一个多维数据库。包含了一个逻辑模型,而这个逻辑模型的目的是为了书写 MDX 语言的查询语句。这个逻辑模型实际上提供了这几个概念: Cubes (立方体)、维度( Dimensions )、层次( Hierarchies)、级别( Levels )、和成员( Members )。而一个 schema 文件就是编辑这个 schema 的一个 xml 文件。在这个文件中形成逻辑模型和数据库物理模型的对应。
Cube:
一个 Cube 是一系列维度 (Dimension) 和度量 (Measure) 的集合区域。在 Cube 中, Dimension 和 Measure 的共同地方就是共用一个事实表。 Cube 中的有以下几个属性:
name:Cube的名字。
caption:标题,在表示层显示。
cache:是否对Cube对应的实表用mondrian进行储存,默认true。
enabled:是布尔型的 , 如果是被激活 ,Cubes 就执行 , 否则就不予理睬,默认为 true。
Cube 里面有一个全局的标签定义了所用的事实表的表名
Dimension
他是一个层次( Hierarchies )的集合 , 维度一般有其相对应的维度表 . 他的组成是由层次( Hierarchies )而层次( Hierarchies )又是有级别( Level )组成 . 其属性如下:
name:Dimension 的名称。
type:类型,有两个可选的类型: StandarDimension 和 TimeDimension,默认为 StandardDimension。
caption:标题 , 在表示层显示的。
UsagePrefix:加前缀 , 消除歧义。
foreignKey:外键,对应事实表中的一个列,它通过元素中的主键属性连接起来。
Hierarchy
你一定要指定其中的各种关系 , 如果没有指定 , 就默认 Hierarchy 里面装的是来自立方体中的真实表 . 属性如下:
name:Hierarchy 的名称,该值可以为空,为空时表示 Hirearchy 的名字和Dimension 的名字相同。当一个 Dimension 有多个 Hierarchy 时,注意 name 值要唯一。
hasAll:布尔型的 , 决定是否包含全部的成员 member。
allMemberName:所有成员的名字 , 也就是总的标题 , 例如: allMemberName= “全部产品”
allLevelName:所有级别的名字,它会覆盖其下所有的 Member 的 name 和所有的Level 的 name 属性的值。
allMemberCaption:例如 : allMemberCaption= “全部产品”这个是在表示层显示的内容。
PrimaryKey:通过主键来确定成员,该主键指的是成员表中的主键,该主键同时要与 Dimension 里设置的 foreignKey 属性对应的字段形成外键对应关系。
primaryKeyTable:如果成员表不只一个,而是多个表通过 join 关系形成的,那么就要通过这个属性来指明 join 的这些表中,哪一个与 Dimension 里设置的 foreignKey 属性形成外键关系。通过该属性来指明主表。
caption:标题 , 在表示层显示的。
memberReaderClass:设定一个成员读取器,默认情况下 Hierarchy 都是从关系型数据库里读取的,如果你的数据不在 RDBMS 里面的话,你可以通过自定义一个 member reader 来表现一个 Hierarchy 。
Level
级别 , 他是组成 Hierarchy 的部分。属性很多,并且是 schema 编写的关键,使用它可以构成一个结构树, Level的先后顺序决定了 Level 在这棵树上的的位置,最顶层的 Level 位于树的第一级,依次类推。 Level 的属性如下:
name:名称。
table:该 Level 要使用的表名。
column:用上面指定的表中某一列作为该 Level 的关键字。
nameColumn:用来显示的时候使用,如果不定义,那么就采用上面的 column 的值来进行显示。。
oridinalColumn:定义该 Level 上的成员的显示顺序,如果不指定,那么采用 column的值。
parentColumn:在一个有父 - 子关系的 Hierarchy 当中,当前 Level 引用的是其父成员的列名。好比是一张部门表,在一张表里表现部门的上下级关系,一个是主键,肯定还有一个字段为连接到该主键的外键的列名,这里的 parentColumn 指的就是这个列名。
Join
对于一个 Hierarchy 来说,有两种方式为其指定:一种是直接通过一个 Table 标签指定;一种是通过 Join 将若干张表连接起来指定。一旦采用 Join 的话,那么就要在 Hierarchy 里的 primaryKeyTable 属性指定主表。
Measure
Measure 就是我们要计算的数值,操作的核心。它的属性如下
name:名称。
aggregator:要采用的计算函数。
column:要计算的列名。
formatString:计算结果的显示格式。
visible:是否可见;
datatype:数据类型,默认为 Numeric。
formatter:采用类来对该 Measure 的值进行格式,具体参考 Level 的formatter 属性。
caption:标题,用来显示时使用。