zoukankan      html  css  js  c++  java
  • Mondrian Schema Workbench 概念及常用参数

    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

    标题,用来显示时使用。

  • 相关阅读:
    团队作业——需求分析
    团队作业——UML设计
    第三次个人作业——用例图设计
    团队项目——介绍文档
    团队集结
    第二次结对作业
    第一次结对作业
    解决Mac中anaconda作图中文异常显示的问题
    《软件工程》——回顾过去 展望未来
    第三次个人作业——用例图设计
  • 原文地址:https://www.cnblogs.com/Bruce_H21/p/10475250.html
Copyright © 2011-2022 走看看