以前一直是用MS Anylize Service的,最近要做的项目是java的,小项目预算有限,所以想找一个开源的java的数据仓库解决方案来用用。

在网上查了一下,发现了Mondrian。Mondrian是基于JAVA的数据仓库引擎,可以集成到web项目中,这一点最吸引我。另外与他搭配的表现层的方案也有不少选择,Jpivot是元老,pentaho,openi看起来是后起之秀。不管怎样,还是先研究一下modrian吧

网上的中文资源比较少,在csdn上找了一下,只发现了两篇比较有用的

Mondrian——有影响的“艺术家”     选择自 kswaking 的 Blog

穷人的通用OLAP方案III--JPivot表现层     选择自 calvinxiu 的 Blog

照着做了一下,发现了一些问题,也有了一些心得。

一.环境准备

1.1 首先介绍一下环境

操作系统:Linux

服务器:Tomcat 5.5

数据库:MySQL 5.0.21

1.2 下载程序。Mondrian在http://mondrian.sourceforge.net 可以下载,最早他是用MS Analyze Service的教程中FoodMart数据库作为demo的,那个是access的数据库。还好现在他有了Platform-Independent的版本,我就下载了那个mondrian-2.1.1-derby.zip 解压缩之后在lib目录里面有一个mondrian-embedded.war,把这个直接放到tomcat的webapps目录里面就能够看到mondrian的demo了。不过后面的测试,我把这个war解开之后放到webapps里面去,并且目录把名字改短了点mondrian。启动tomcat,在浏览器输入http://localhost/mondiran 看到了demo。需要说明一下的是,mondrian的发布包含了Jpivot,用它来做展示层,所以不用再去单独下载Jpivot了。

1.3 数据库建表,在MySQL数据库里面建立table,借用了kswaking的数据库结构

在这个tiny的系统中,数据库有3个表tb_employee(职员表),tb_time(时间表),tb_salary(薪酬表)。表结构如下:

drop table tb_employee;

create table tb_employee

(

employee_id number, --职员id

employee_name varchar2(10) --职员姓名

);

drop table tb_time;

create table tb_time

(

time_id number, --时间id

the_year char(4), --年

the_month char(2) --月

);

drop table tb_salary;

create table tb_salary

(

employee_id number, --职员id

time_id number, --时间id

salary number(19,4) --薪酬

);

当然,为了使系统能够运行,还需要读者向数据库表中插入一些数据。

二. mondrian测试

需要说明的是mondrian使用了MS一样的MDX语言实现查询,这对于从MS Analyze Services入门的人真是一个好消息。

2.1 先编写schema。

这个schema定义了一个cube,包含两个Dimension和一个Measure。很容易看懂,就不解释了。

文件路径为webapps/mondrian/WEB-INF/queries/mondriantest.xml。

为了后面的测试方便,我把文件放到了queries目录里面。

因为用MySQL建表的时候都用小写的,所以schema里面的字段名也都用了小写(我一开始也使用大写的,结果出错,找不到字段),calvinxiu的文章说如果是Oracle数据库,这里的字段要用大写。

2.2 编写JSP

Connection connection = DriverManager.getConnection("Provider=mondrian; Jdbc=jdbc:mysql://localhost/mondrian; JdbcUser=root; JdbcPassword=; Catalog=file:///usr/local/apache-tomcat-5.5.12/webapps/mondrian/WEB-INF/queries/mondriantest.xml; JdbcDriver=com.mysql.jdbc.Driver", null, false);

String querystr = " select {[Measures].[Salary]} ON COLUMNS, {[Employee].[employeeId].Members} ON ROWS from CubeTest ";

Query query=connection.parseQuery(querystr);

Result result = connection.execute(query);

out.println("get result");

%>

可以看到mondrian也使用jdbc来连接数据库的,其中要特别注意的是Catalog指名了schema的位置。

文件路径webapps/mondrian/mondriantestmdx.jsp

2.3 测试

到目前为止,我们只测试了Mondrian,它只负责数据的提取和组织,所以在画面上没有看到任何的数据,下一篇文章将继续研究数据的展现 - Jpivot。

mondrian mysql 实例_mondrian入门 | 学步园相关推荐

  1. mondrian mysql 实例_mondrian入门.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbsp软件工程 mondrian入门.doc7页 本文档一共被下载:次 ...

  2. mondrian mysql 实例_mondrian 导入demo数据到mysql

    很久没动过mondrian了,很多步骤都忘记了,同时老版本和新版本的步骤,配置有些不同,而这次需要使用mondrian3.3,因此我把安装到使用的各个过程记录一下,以备查询: 环境:windows下: ...

  3. mondrian mysql 实例_MONDRIAN支持的常用mysql函数

    数值函数 MAX    Caclulatedmember实现 MIN        Caclulatedmember实现 AVG       Caclulatedmember实现 SUM       ...

  4. mondrian mysql驱动_Mondrian的安装与运行 | 学步园

    1.下载:mondrian-2.0.0.zip ,解压至E:/workspace/Mondrian 2. 把lib/mondrian.war解压到  {TOMCAT_HOME}/webapps/mon ...

  5. java对jna的配置选项_JNA编程之一:入门 | 学步园

    好了,一堆废话后还是要进入主题,所谓JNA就是"Java Native Access"的缩写.说白了就是Java直接访问/调用本地动态库.最好的入门方法就是从JNA的官网开始. 0 ...

  6. mondrian mysql 实例,windows7环境下将Mondrian例子数据库导入到mysql中

    1.获取需要的jar包下载mondrian-3.4.1.zip 解压至C:\mondrian 拷贝C:\mondrian\lib下的mondrian.war到tomcat下的webapps下 重启to ...

  7. mysql中imagin的类型_Image转换成Mysql的blob类型 | 学步园

    发现网上好多方法都不可行,下面是我的方法,略麻烦,纯属为自己以后的使用做个记录,如果你有更好的方法请留言,谢谢~ 第二种方法,已知文件路径,通过构造文件的方式转换成blob很简单.如果很不幸,你只有I ...

  8. mysql数据库连接ado_mysql:2种连接数据库方式:ADO连接、mysql的API连接 | 学步园...

    一.创建数据库.创建表.插入数据 >show databases; >create database mydb; >user mydb; >create table mytab ...

  9. java软件开发 jpanel_java图像界面开发简单实例-JPanel应用 | 学步园

    importjava.awt.Graphics;importjavax.swing.JFrame;importjavax.swing.JPanel;/*** 扩展于JPanel的类,重写paintCo ...

最新文章

  1. 2022-2028年中国城市地下综合管廊建设深度调研及投资前景预测报告
  2. 猫头鹰的深夜翻译:你需要了解的数据库名词
  3. 量化投资交易 vn.py
  4. Ajax(二)-XMLHttpRequest(核心)对象的属性和方法
  5. 这些智能合约漏洞,可能会影响你的账户安全!
  6. android activity启动模式_从0系统学Android--2.5Activity启动模式
  7. 前端输入框错误提示_WEB/APP开发基础之旅--前端、服务器端、数据库综合开发案例...
  8. Web前端优化,提高加载速度
  9. Eclipse如何重置窗口
  10. mysql多表查询(一口气解决掉:自连接 左右连接 满连接等)
  11. 程序化交易入门(一)
  12. 自我管理 - 希望2015年自己能够做到的几点目标
  13. Presenting view controllers on detached view controllers is discouraged的解决方案
  14. 如何选择合适的网络自动化工具
  15. 如何从本地wsl登录阿里云服务器
  16. 90°和180°的连接器有什么区别?
  17. docker搭建grafana+loki+promtail日志收集系统
  18. 网络安全:预防胜于治疗
  19. pythonword编辑报告模板_【2018-2019】python日志-word范文模板 (14页)
  20. AGC007 A - Shik and Stone(模拟)

热门文章

  1. jqGrid实现当前页列合计与总计
  2. linux下windows软件的代替品
  3. 商务年终年中总结报告PPT模板
  4. nLite - 整合驱动程序 - PNP 驱动 与 文本模式驱动 的区别
  5. 重庆师范大学计算机专硕分数线,重庆师范大学社会工作硕士历年复试分数线_社会工作考研分数线_复试线 - 希赛网...
  6. 什么是荧光原位杂交(FISH)?
  7. 课程学习——模糊C均值聚类分割法
  8. 开发生命周期与产品生命周期
  9. C语言学习笔记——指针章节
  10. 7-179 小文的心理阴影时刻