MondrianSchema整理笔记

MondrianSchema整理笔记

1.  Mondrian是什么?

Mondrian是一个用Java成的OLAP引擎。它实现了MDX语言、XML解析、JOLAP规范。它从SQL和其它数据源读取数据并把数据聚集在内存缓存中,然后经过 Java API用多维的方式对结果进行展示。

2.  Mondrian组成与架构

Mondrian又四个manager组成,见下图:

l  Session Manager:最为重要的一个部分。接受MDX查询、解析MDX,返回结果。

l  Schema Manager:与初始化紧密相关。主要是一些重要的数据结构如缓存池的构建以及多维模型的生成。

l  Aggregate Manager:实现了对聚集表的管理。主要是对OLAP缓存的管理,属于性能优化的部分。

l  Dimension Manager:维度的管理。实现多维模型中维度和关系数据库表中列的映射,在Schema Manager也有部分功能处理这些映射。

 

从架构上可以分为四个层次:

l  计算层:分析,验证,执行MDX语句。先计算坐标轴,然后再计算每个单元格的值,从效率上的考虑,计算曾批量的从聚合层获取单元格数据集合。

l  聚合层:聚合层中缓存了多维查询结果,即单元格的数据集合,如果计算层所需要的数据不在缓存中,从存储层中进行查询获取数据并缓存。

l  存储层:一般使用关系数据库实现,一般采用星型结构,提供事实表,维度表和聚合表。

l  表现层:一般使用Saiku或者PentahoBI-server。

系统部署结构上,可以分三层结构分开部署,将表现层部署在一台机器上,计算层和聚合层部署在第二台,存储层部署在第三台。

3.  MondrianSchema版本

需要注意的是MondrianSchema3.0和4.0的版本区别,升级过后SchemaXML的写法发生了比较大的变化。支持Schema3.0的写法,且shema4.0必须加上metamodelVersion='4.0'属性。

l  Schema3.0支持的主要elements

立方体:<Cube>

维度:<Dimension>

层级:<Hierarchy>

级别:<Level>

度量:<Measure>

维表关联:<Join>

视图:<View>

虚拟立方体:<VirsualCube>

聚合表:<AggregateTbale>

计算成员:<CalculateMember>

l  Schema4.0支持的主要elements

立方体:<Cube>

物理模型:<PhysicalSchema>

关联:<Link>:定义数据库物理表之间的关联关系

层级组:<Hierarchies>

层级:<Hierarchy>

级别:<Level>

维度组:<Dimensions>

维度:<Dimension>

维度属性:<Attribute>

度量组:<MeasureGroups>

度量维度关联:(事实表和维度表的关联)<DimensionLinks>

查询:<Query>:等同View

计算成员:<CalculateMember>

聚合表:<AggregateTable>

Schema3.0

Schema4.0

立方体:<Cube>

立方体:<Cube>

维度:<Dimension>

维表关联:<Join>雪花模型

维度组:<Dimensions>

维度:<Dimension>

维度属性:<Attribute>

层级:<Hierarchy>

级别:<Level>

层级组:<Hierarchies>

层级:<Hierarchy>

级别:<Level>

度量:<Measure>

度量组:<MeasureGroups>

度量维度关联:(事实表和维度表的关联)<DimensionLinks>

视图:<View>

查询:<Query>:等同View

计算成员:<CalculateMember>

计算成员:<CalculateMember>

虚拟立方体:<VirsualCube>

 

聚合表:<AggregateTable>

聚合表:<AggregateTable>

 

物理模型:<PhysicalSchema>

关联:<Link>:定义数据库物理表之间的关联关系

4.  多维数据分析平台构建

调研了两种个架构:

1.  mysql(Kylin)+Mondrian+Mondrian workbench+Saiku

2.  mysql+Mondrian+Pentaho Business intelligence server Community Edition

此例子使用第一种框架作为测试平台。平台框架如下:

MondrianSchema没有一个比较好的图形化编程工具,workbench只是一个这种的工具,且目前只找到3.0版本的。所以一般为手写。

Mysql和mondrian的安装就不做过多的介绍,mysql本地安装,mondrian下载最先的4.0版本的jar包即可。重点介绍一下Saiku的安装。

Saiku下载地址:http://community.meteorite.bi/,下载在最新的saiku-latest.zip解压。自带mysql驱动所以不需要导入mysql驱动包,只需要将下载的mondrian-4.0的jar包复制到server/tomcat/webapps/saiku/WEB-INF/lib/下面集成Mysql+mondrian+Saiku的三层数据分析系统。

启动Saiku,访问http://localhost:8080,注意安装在本机所以是localhost。默认用户名和密码是admin/admin。初次登录提示需要从http://licensing.meteorite.bi/网站获取一个免费的证书。并且上传到http://localhost:8080/upload/html,照做即可。

登录进Saiku之后,在控制台-Datasourcemanager-add data source添加本地数据库连接信息即可。至此mysql-mondrian-saiku的三层多维数据分析平台构建完成。

5.  仿真数据集的准备

本例采用网络上的销售-产品数据集作为多维数据分析的数据源。数据结构为雪花模型。由一张事实表sale,三张维度表product,producttye,Customer三张维度表构成。包含customer和product两个维度,其中product的外键proTypeId指向ProductType的主键proTypeId构成雪花模型。包含单价unitPrice和销售量number两个度量。具体数据结构见下图。

 

建表和数据装在的构成就不在做过多的介绍。

6.  Mondrian schema3.0/4.0demo演示

结合saiku界面的实例和遇到的大坑演示。

7.  使用过程遇到的坑

l  查看mondrian生成的mysql语句需要配置

default-storage-engine=INNODB

general_log=on

general_log_file=D:\mysql-5.6.34-winx64\data\mysql.log

 

l  mondrain schema4.0特性重点分析

1.  元素<physicalShema>必须要有:指定cube涉及到设事实表和维表的key和关联关系,但是physicalSchema下面的table必须要:指定cube需要的事实表和维度表,link不是必须,可由<Dimension>下面的<Join>属性,<MeasureGroups>下面的<DimensionLinks>下面的<ForeignKeyLink>代替。

2.  <Dimension>下面的<Join>属性也不是必须要有:指定雪花模型的维度表之间的关联关系。可在<physicalSchema>下的<link>中指定维表之间的关联关系。

3.  <MeasureGroups>下面的<DimensionLinks>下面的<ForeignKeyLink>必须要有:指定事实表里面的measures(度量)和维表之间的关联关系。也就是事实表和维度表之间的关联关系。

4. <View>(3.0)和<Query>(4.0)的区别:<Query>和<View>功能上一样,但是Query的语法和官网上有点区别,推荐用View。

5. 使用<View>报错:Caused by: java.sql.SQLException: No suitable driver found for jdbc.mysql://localhost:3306/test

解决:链接写错了。

6.使用<Query>报错:Caused by: org.eigenbase.xom.XOMException: In Schema: In PhysicalSchema: In Query: Attribute 'alias' is unset and has no default value。

解决:name改alias(与官网有区别)。

7.将<Query>的name属性改为alias报错:Caused by: java.sql.SQLException: No suitable driver found for jdbc.mysql://localhost:3306/test

解决:链接写错了。

8. mondrainShema的大坑

(1) 错误:Caused by:com.mysql.jdbc.exceptions.jdbc4. MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group by `producttype`.`proTypeName` order by ISNULL(`producttype`.`proTypeName`' at line 1。

解决:解决:physicalSchema中涉及的要用到的表的定义中有个单词写错了,(Column)写成了Cloumn。

(2) 错误:定义了Hierarychy,却说attribute必须要有一个Hierarchy,

解决:physicalSchema中涉及的要用到的表的定义中有个单词写错了,(Column)写成了Cloumn。

总结:schema3.0和schema4.0最大的区别就是,4.0必须在物理模型(PhysicalSchemaschema)先定义,不管是表,还是实时表和维表之间的关系描述,相对schema4.0整个模型思路更清晰,理解起来更容易,但是官方这块暂时还没有发布schema4.0标准api,基本上大部分都能实现,相对schema3.0这块。相信,这块会发展的越来越好。

 

参考网站:https://my.oschina.net/zhouwang93/blog/1801841

http://mondrian.sourceforge.net/head/xml_schema.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: Verdi培训整理笔记主要是指针对Verdi软件进行的培训所做的总结和整理。Verdi是一款用于设计验证和调试的仿真工具,广泛用于芯片设计和验证领域。培训整理笔记的目的是帮助学员系统化地掌握Verdi的使用方法和技巧,从而提高设计验证的效率和准确性。 Verdi培训整理笔记通常包括以下内容: 1. Verdi的基本介绍:包括Verdi的功能特点、应用领域等基本信息,以及如何正确安装和配置Verdi软件。 2. Verdi的基本操作:介绍Verdi的用户界面和基本元件,包括如何打开设计文件、添加信号和波形以及观察时序图等操作。 3. Verdi的高级功能:介绍Verdi的高级功能,如信号追踪、代码覆盖率分析、时序约束检查等。帮助学员深入理解Verdi的强大功能,并能在设计验证过程中灵活应用。 4. 常见问题和解决方法:整理常见的Verdi应用问题,并给出相应的解决方法。帮助学员能够快速解决在Verdi使用过程中遇到的问题。 总之,Verdi培训整理笔记是一个对Verdi软件进行系统性梳理和总结的过程,通过整理这些笔记,学员可以更好地理解和应用Verdi,提高设计验证的能力和效率。 ### 回答2: Verdi培训整理笔记是指对所接受的Verdi培训内容进行整理和总结的过程。通过整理笔记,我们可以更好地回顾和巩固自己所学的知识,提高学习效果和记忆力。下面将介绍整理笔记的重要性以及如何进行有效的Verdi培训整理笔记。 首先,整理笔记的重要性不可忽视。通过整理笔记,我们可以将繁杂的培训内容进行分类、梳理和归纳,帮助我们更好地理解和记忆知识点。同时,整理笔记也方便我们今后复习和回顾所学内容,提高知识的掌握和应用能力。此外,在工作中,整理笔记也是一种重要的信息管理方式,方便回顾和查阅。 进行Verdi培训整理笔记时,可以采取以下方法。首先,在培训过程中,要积极记录重要的概念、原理、公式等内容,尤其是讲解重点和难点的部分。其次,在整理笔记时可以使用标题、分点和箭头等方式使笔记结构清晰,便于理解和回顾。同时,可以使用不同颜色的笔或者高亮笔标记重点内容,突出重要性。另外,在整理过程中,可以加上个人理解和思考,以及实际应用的案例,丰富笔记内容,便于理解和记忆。 总结而言,Verdi培训整理笔记对于我们巩固所学知识、提高学习效果和提升工作能力都起到了重要作用。通过合理的整理笔记方法,我们可以更好地理解和记忆所学内容,并能在之后的学习和工作中随时回顾和查阅需要的知识点。因此,在接受培训过程中,要重视整理笔记的工作,培养良好的整理笔记习惯,提高学习效果和工作能力。 ### 回答3: Verdi培训整理笔记是指对Verdi培训内容进行整理和归纳的笔记。Verdi培训是一种针对软件开发工程师的培训课程,旨在提供关于Verdi工具的使用和调试技巧。在学习这门课程时,整理笔记是非常重要的,可以帮助我们梳理课程的重点和核心内容。 首先,在整理笔记时,我们可以按照不同的章节或主题进行分类,方便日后查找和复习。比如,可以按照Verdi工具的不同功能模块,如调试界面、波形查看、时序分析等进行分类。 其次,在整理笔记时,应该注意抓住重点和关键信息。Verdi培训课程通常涉及到很多细节和技术性的知识,我们应该将重点内容标记出来,例如重要的Verdi命令和快捷键,以及常用的调试方法和技巧。 此外,笔记应该简明扼要,避免冗长的叙述和重复的内容。我们可以使用清晰简洁的语言记录下关键信息和思路,以便后期复习时快速回顾。 最后,在整理笔记时,可以结合自己的理解和总结,对所学内容进行概括和归纳。这不仅有助于加深对Verdi工具的理解,还可以为今后实践应用提供参考。 总之,Verdi培训整理笔记是一项重要的学习工作,它可以帮助我们更好地掌握Verdi工具的使用技巧和调试方法。通过合理整理和归纳,我们可以在日后的实践中更加高效地应用Verdi工具,提升我们的工作效率和质量。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值