下载和安装Mondrian
Mondrian官方网站上的文档Installation部分似乎很久没更新了,例如文档里提到下载.zip格式的打包文件,实际上网站和sourceforge上都没有提供,只提供了.jar格式(网站提供版本为3.12.0.1),看起来已经转移到github了。经过实践,安装的方法如下:
1、使用git命令行,从github上将此项目clone到本地:
git clone https://github.com/pentaho/mondrian.git
2、master分支是很老的3.13版,切换到比较新的4.5.0.3版,查看tag可找到最新的release号。(注:3.x版比较稳定,4.x还在beta阶段)
git checkout 4.5.0.3
3、项目的master分支里没有pom.xml(虽然有些分支里有),依赖项是使用ivy管理的。在命令行里执行ant脚本:
ant
注意:jdk版本建议用8,并设置好JAVA_HOME环境变量。
(编译还有些问题,稍后解决)
安装JPivot
JPivot是一个基于web的OLAP客户端,主要提供了一些taglib以便在网页里以表格或统计图的形式展示数据,以及实现钻取功能。
JPivot最新版本(1.8.0)居然是2008年release的,汗!
Version 1.8.0 (Mon Mar 17 14:53:21 CET 2008)
从sourceforge下载jpivot-1.8.0.zip,解压缩以后有一个jpivot.war文件,丢到tomcat的webapps目录下,启动tomcat,访问http://localhost:8080/jpivot。这时页面上可以看到几个demo链接,但点进去会报错,因为数据源没有设置。
为了使用mysql数据源,需要改/WEB-INF/mondrian.jsp文件(这个文件定义数据源和实际的查询,会被testpage.jsp包含),修改<jp:mondrianQuery>这个标签里的内容,再把mysql的jdbc驱动文件(如mysql-connector-java-5.1.21-bin.jar)复制到tomcat的lib目录下,这样就可以看到查询结果了。
关于Drill Down和Drill Through
Drill Down是指将某个维度展开到下一级,例如一个表格显示年度销售量统计数据,用户在界面上点击年份后,表格显示这个年份的月度销售量统计数据;与Drill Down相反的操作成为Drill Up。
Drill Through是指点击表格里的一个对象时,跳转到这个对象的详细信息。例如点击月度销售量数字时,显示一个表格展示这个月的订单列表。
在Mondrian里要进行drill through查询,只需在SELECT前添加“DRILLTHROUGH ”关键字即可;在olap4j里,Cell对象支持.drillThrough()方法,返回一个ResultSet。
注意,olap4j里执行一个普通的“SELECT ...”查询返回的是CellSet类型,而执行“DRILLTHROUGH SELECT ...”查询返回的则是ResultSet类型。(参考How to use DRILLTHROUGH with Mondrian OLAP?)
Mondrian不同版本对DRILLTHROUGH查询的执行结果也有不同,例如下面的查询,使用mondrian-3.12-SNAPSHOT执行结果为fact表原始结构,row的数量符合预期;而用mondrian-4.4-SNAPSHOT执行结果却只有一条记录,不知道是什么原因。(Update: 猜测原因1: 4.x版对3.x版的schema格式转换问题;2: 4.x版的bug)
DRILLTHROUGH SELECT {[Measures].[Sales]} ON 0, {[Time].[months].members} ON 1 FROM [SteelWheelsSales]
关于Mondrian的版本
Mondrian官网提供的下载链接是3.12,但目前(2016/7/6)最新的版本是4.5,可以在github上下载到。4.x是beta版,与3.x的主要改变如下,详细区别见这个链接:
- Schema格式改变,3.x版的mondrian不能读取4.x里定义的schema,反之可以读取;
- 4.x里去掉了JPivot;
- 4.x里去掉了Schema workbench和XMLA server,以后会有独立项目;
Mondrian 4.x现在还不是很稳定(约1/10的测试用例无法通过),不过开发活动十分频繁,实际项目里建议先使用3.x(具体来说3.12),等4.x正式版发布再视实际需要升级。
PS. JIRA上的版本更看不懂,也许是跟Pentaho Analysis Server同步?
参考资料:
请保留原始链接:https://bjzhanghao.com/p/352