Mondrian Schema解析
来源:互联网 发布:淘宝客最低佣金是多少 编辑:程序博客网 时间:2024/05/29 18:17
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
你一定要指定其中的各种关系 ,如果没有指定 , 就默认 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
标题 , 在表示层显示的
defaultMember
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 指的就是这个列名。
nullParentValue
如果当前的 Level是有上下级关系(设置了 parentColumn 属性),如果该 Level又处于顶级,我们需要将顶级的数据取出来,这里指的是位于顶级的父成员的值,有些数据库不支持 null, 那么也可以使用 ’0’ 或 ’-1’ 等,这就表示顶级的成员的父ID 为 ’0’ 或为 ’-1’。
type
数据类型,默认值为 string。当然还可以是 Numeric 、 Integer 、 Boolean 、 Date 等。
uniqueMembers
该属性用于优化产生的 SQL,如果你知道这个级别和其父级别交叉后的值或者是维度表中给定的级别所有的值是唯一的,那么就可以设置该值为 true,否则为 false 。
levelType
该 Level 的类型,默认为 regular (正常的),如果你在其 Dimension属性 type 里选择了 TimeDimension 那么这里就可以选择 TimeYears 、 TimeQuarters 、 TimeMonth 、 TimeWeeds 、TimeDays 。
hideMemberIf
在什么时候不隐藏该成员,可选的值有三个: Never 、 IfBlankName 、 IfParentName
approxRowCount
该属性可以用来提高性能,可以通过指定一个数值以减少判断级别、层次、维度基数的时间,该属性在通过使用XMLA 连接 Mondrian 很有用处。
caption
标题 , 在表示层显示的
captionColumn
用来显示标题的列
formatter
该属性定义了 Member.getCaption()方法返回的动作值,这里需要是一个实现了 mondrian.olap.MemberFormatter 接口的类,用来对 Caption 地值进行格式化。
Join
对于一个 Hierarchy来说,有两种方式为其指定:一种是直接通过一个 Table 标签指定;一种是通过 Join 将若干张表连接起来指定。一旦采用 Join 的话,那么就要在Hierarchy 里的 primaryKeyTable 属性指定主表。
Measure
Measure 就是我们要计算的数值,操作的核心。它的属性如下:
属性名
含义
name
名称
aggregator
要采用的计算函数
column
要计算的列名
formatString
计算结果的显示格式。
visible
是否可见
datatype
数据类型,默认为 Numeric
formatter
采用类来对该 Measure的值进行格式,具体参考 Level 的 formatter属性。
caption
标题,用来显示时使用。
- Mondrian Schema解析
- mondrian schema 文件解析
- Mondrian Schema解析
- Mondrian中Schema解析流程
- mondrian编写schema注意事项
- Mondrian Schema详解
- Mondrian Schema详解
- Mondrian Schema详解
- mondrian --schema国际化
- mondrian schema学习过程
- Mondrian Schema Workbench使用指南
- Mondrian OLAP: schema
- Mondrian Schema设计
- Design a Mondrian Schema
- mondrian的schema配置文件demo
- Mondrian系列(三)-如何设计Mondrian的Schema(1)
- Mondrian入门介绍之schema manager
- Mondrian Schema workbench工作界面 简介
- tomcat catalina.sh JAVA_OPTS参数说明与配置
- Android ListView 的布局图标大小设置
- 一个URL编码和解码的C++类
- Queue实现
- sh里的变量 $0 $1 $$ $#
- Mondrian Schema解析
- Bridge(桥接)模式
- Javascript经典正则表达式
- 【phpcms-v9】phpcms-v9中模板载入函数template详解
- 几道java面试题及答案
- 我的一次失败的创业
- CentOS服务器远程桌面解决方案之FreeNX
- 小星星愿望
- 平等的诉求——读“爸爸,请你‘跪’下来跟我说话”