在应用里集成Mondrian时的Catalog位置问题

场景:在一个Webapp里集成Mondrian,按官方文档,Catalog位置(即cube文件所在路径)是这个样子的:

Catalog=file:demo/FoodMart.xml

但实际测试发现Mondrian无法找到这个文件,提示信息是“Virtual file is not readable”。如果把相对路径改为绝对路径则是可以的,例如:

Catalog=file:/c:/my/cube/folder/FoodMart.xml

绝对路径的问题是在不同开发部署环境下不太可能相同,所以还是得找其他办法。官方文档里没有写其他例子,按经验试试classpath协议(cube文件放在classpath下):

Catalog=classpath:/my/cube/resource/FoodMart.xml

在windows下居然成功了,其实Mondrian也是调用java.net.URL来获取资源的,所以能解释通。问题是,在linux下同样代码却不行,提示信息是“unknown protocal: classpath ”,两个开发环境都是JDK 1.7,没道理。(这个问题一直没解决)

后来查saiku(基于mondrian的一个开源BI软件)问题,发现还可以用这种写法(链接1链接2):

Catalog=res:/my/cube/resource/FoodMart.xml

试了一下,在windows和linux下都顺利通过。前提依然是cube文件要放在classpath下。这也是目前使用的解决方案。

补充:还有一种方法是直接写http://开头的链接,这需要把cube文件暴露出来,感觉不如res:的干净。

Pentaho Mondrian和数据分析(OLAP)

cubo

下载和安装Mondrian

Mondrian官方网站上的文档Installation部分似乎很久没更新了,例如文档里提到下载.zip格式的打包文件,实际上网站和sourceforge上都没有提供,只提供了.jar格式(网站提供版本为3.12.0.1),看起来已经转移到github了。经过实践,安装的方法如下:

Continue reading "Pentaho Mondrian和数据分析(OLAP)"