Mondrian是一个用Java写成的OLAP(在线分析性处理)引擎。它用MDX语言实现查询,从关系数据库(RDBMS)中读取数据。然后经过Java API用多维的方式对结果进行展示。它使用xml作为逻辑模型的描述文件。
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: 标题,用来显示时使用。
分享到:
相关推荐
foodmart.mondrian.xml。这个可以包含属性、信息。 同时支持了mondrian3.x版本和mondrian4.x版本,配合其他资源的sql,通过建模workbench链接数据库之后,直接加载当前的这个xml就可以了。 亲测不报错,建模正常解析...
mondrian4 schema设计说明文档...4版本,官网链接 https://mondrian.pentaho.com/head/documentation/schema.php,无法访问,直接用该资源即可。附3版本地址: https://mondrian.pentaho.com/documentation/schema.php
Mondrian Schema 的 schema 文件是一个 XML 文件,用于定义多维分析模型。该文件中定义了 Cube、Dimension、Hierarchy 和 Level 等概念的关系,并定义了它们之间的对应关系。 Mondrian Schema 的优点包括: 1. ...
1. **mondrian.jar**:这是 Mondrian 的主库,包含 OLAP 引擎的核心实现。 2. **schema.xml**:Mondrian 的多维数据集(立方体)定义文件,描述了数据模型的结构,包括维度、层次、属性和度量。 3. **sample_data** ...
例如,用户可以在这里找到如何安装和配置插件、如何创建和修改Mondrian schema的步骤,以及插件提供的各种工具和功能的详细说明。 在使用Mondrian Schema编辑器插件时,用户需要了解Mondrian的基本概念,比如维度...
mondrian_example.zip, olap4j.jar,mondrian.jar,JPivot.war Mondrian配置是数据仓库和商业智能领域中的一个重要环节,它是一个开源的多维分析引擎,常用于在线分析处理(OLAP)系统。Mondrian通过与各种数据源...
mondrian schema 的eclipse插件 还需要安装 EMF&SDO (Eclipse官方的一个建模插件) 具体参考:http://jpivot.sourceforge.net/mondrian-schema/
mondrian3.x+mysql5.7所需要的材料 是否需要可以查看:https://truedei.blog.csdn.net/article/details/105461087 同时https://truedei.blog.csdn.net/article/details/105461087也是一份帮助文档
mondrian-4.3.0.1.2-SPARK.jar
更多可以参考官方 http://mondrian.pentaho.com/documentation/xml_schema.php#Cube 这个是可视化工具,配置好jdk1.8之后,运行workbench.sh或者workbench.bat就可以把代码弹出来,配合我其他资源的foodmart.xml就...
- 从mondrian.war发布包中的WEB-INF/lib目录中拷贝所有jar包到Mondrian工程的lib目录中。 - 然后将这些jar包添加到项目构建路径中,以便项目可以正常使用这些库。 - 步骤如下: - 右键点击项目 -> 属性 -> Java ...
Mondrian 的 Schema 使用 XML 格式来表示。一个典型的 Schema 文件包含了所有的逻辑结构定义,例如 Foodmart 示例中的 `Foodmart.xml` 文件。由于目前只能通过文本编辑器手动创建 Schema 文件,因此熟悉 XML 语法是...
* mondrian.calc:该包包含了计算相关的类和方法,例如计算引擎、函数调用等。 * mondrian.olap:该包包含了 OLAP 相关的类和方法,例如多维数据的管理和分析。 * mondrian.rolap:该包包含了 ROLAP 相关的类和方法...
6. **导出和部署**:完成设计后,Schema Workbench允许你导出为XML格式的Mondrian Schema文件,然后在实际的Mondrian服务器上部署和使用。 在使用Schema Workbench时,你需要理解基本的OLAP概念和MDX查询语言,这将...
例如,`mondrian.schema`包含了Schema的定义和管理;`mondrian.calc`处理计算逻辑;`mondrian.olap`实现了MDX解析和函数库;`mondrian.rolap`专注于关系到多维(ROLAP)的实现。 2.2. Schema Manager部分 Schema ...
mondrian-3.11.jar
把mondrian.war解压到{TOMCAT_HOME}\webapps\mondrain。解压方法:把mondrian.war复制到{TOMCAT_HOME}\webapps文件夹,再重启tomcat。
- 将 `mondrian.war` 文件放置于 Tomcat 的 webapps 目录下。 - 将 MySQL 的 JDBC 驱动 `mysql.jar` 加入到 `mondrian\WEB-INF\lib` 目录。 **3. 配置Mondrian** - **配置数据源文件**:`datasources.xml` - ...
开发者可以通过XML或者API来创建和管理Schema。mondrian-api中的Schema接口提供了创建和操作这些元素的方法,如`addCube()`用于添加立方体,`addDimension()`用于添加维度等。 2. **Cubes**: 立方体是数据仓库的...
【Mondrian 3.x+MySQL 5.7 教程】 Mondrian是一个开源的OLAP(在线分析处理)引擎,它允许用户通过多维数据集(数据立方体)进行复杂的查询和分析。Mondrian与MySQL 5.7的结合使用,使得在关系型数据库上构建和执行...