数据仓库研究之二--mondrian入门

mondrian使用测试 项目中需要调研使用mondrian,自己从网上下了一个的demo,但是运行过程中遇到了一些问题,随着对问题的分析和解决也加深了对mondrian的使用。 阅读详情
 以前一直是用MS Anylize Service的,最近要做的项目是java的,小项目预算有限,所以想找一个开源的java的数据仓库解决方案来用用。

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

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

http://dev.youkuaiyun.com/develop/article/31/31791.shtm   Mondrian——有影响的“艺术家”     选择自 kswaking 的 Blog

http://dev.youkuaiyun.com/develop/article/68/68661.shtm  穷人的通用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。

<?xml version="1.0"?>
  <Schema name="Mondrian">
    <Cube name="CubeTest">
    <Table name="tb_salary"/>

    <Dimension name="Employee" foreignKey="employee_id">
      <Hierarchy hasAll="true" primaryKey="employee_id">
        <Table name="tb_employee"/>
        <Level name="employeeID" column="employee_id" uniqueMembers="true">
           <Property name="employeeName" column="employee_name"/>
       </Level>
       </Hierarchy>
    </Dimension>

    <Dimension name="Time" foreignKey="time_id">
      <Hierarchy hasAll="false" primaryKey="time_id">
        <Table name="tb_time"/>
        <Level name="year" column="the_year" uniqueMembers="false"/> 
        <Level name="month" column="the_month" uniqueMembers="false"/>
      </Hierarchy>
    </Dimension>

    <Measure name="Salary" column="salary" aggregator="sum"/>

  </Cube>
</Schema>

这个schema定义了一个cube,包含两个Dimension和一个Measure。很容易看懂,就不解释了。
文件路径为webapps/mondrian/WEB-INF/queries/mondriantest.xml。

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

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

 

 

2.2 编写JSP

 

<%@ page import="mondrian.olap.*"%>
<%
  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 测试

在浏览器输入http://localhost/mondrian/mondriantestmdx.jsp 可以看到显示的结果 get result,说明一切正常。

 

 

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

mondrian 性能优化 mondrian作为开源的rolap引擎非常稳定,bug也非常少,但是就是基本没用人维护了,如果出现什么问题,需要自己修改源码了。现在很多BI工具的rolap引擎都使用的是modnrian ,例如比较出名pentaho,saiku,jpivot。这些产品只是在前端实现了一个前端展示,最终的多维度数据的聚合查询通过mondrian完成的,但是mondrian中不支持钻取与上卷操作,这些需要前端展示工 阅读详情

相关推荐

开源OLAP引擎:Mondrian

OLAP Created 星期四 20 十月 2016为了满足业务管理和决策的报表系统(包括传统报表、数据仓库、OLAP等)也被创建出来,企业主管通过报表了解企业的总体运行状态。但是,随着企业间竞争的加剧和市场节奏的进一步加快,企业的日常管理需要对关键业务指标的更加实时的监控和反馈。比如:制造业需要更及时的仓库调度、金融业需要更实时的风险防范、电信业需要更及时的服务指标监控。于是,越来越多的企业

小小懒羊羊 1万+

Mondrian Schema详解

Schema Schema 定义了一个多维数据库。包含了一个逻辑模型,而这个逻辑模型的目的是为了书写 MDX 语言的查询语句。这个逻辑模型实际上提供了这几个概念: Cubes (立方体)、维度( Dimensions )、层次( Hierarchies )、级别( Levels )、和成员( Members )。而一个 schema 文件就是编辑这个 sc...

深蓝 364

mondrian foodmart access 数据库

mondrian foodmart access 单机版DEMO数据库

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

1.获取需要的jar包下载mondrian-3.4.1.zip解压至C:\mondrian拷贝C:\mondrian\lib下的mondrian.war到tomcat下的webapps下重启tomcat.自动加载webapps - mondrian.war拷贝tomcat\webapps\mondrian\WEB-INF\lib下所有jar包到C:\mondrian\lib【还需要将mysql\C...

weixin_36282234的博客 200

dxf-viewer 查看器

dxf-viewer SDK 的示例,它是一个基于 Three.js 和 Vue3 构建的基于 WebGL 的 BIM 模型查看器。它用于查看 DWG/DXF/PDF 文件。面积测量 - 角度测量 -标记。

qq_25547755的博客 866

GROMACS自由能景观图绘制全流程:从PCA分析到Origin 3D可视化(附避坑指南)

本文详细解析了使用GROMACS绘制自由能景观图的全流程,涵盖从PCA分析、数据预处理、自由能计算到最终在Origin中进行3D可视化的完整步骤。文章重点分享了数据处理与格式转换中的常见“避坑”指南,帮助研究者从分子动力学轨迹中有效提取并解读构象自由能信息,深化对生物大分子动力学过程的理解。

oauth7security的博客 309

mondrian olap 示例_Mondrian数据库olap应用文档

Mondrian数据库olap应用文档一 创建数据仓库1)DW名称主要是在相应数据库中建立相应的数据仓库,事实表,维表结构2)选择数据源主要是应用weblogic 控制台,建立数据库连接池、数据源并进行数据源的选择例如:建立数据源jdbc/LnSw在weblogic控制台中配置数据库连接池和数据源,其中数据源的格式如jdbc/xxxx表示;如:在纳税评估系统中数据源格式为jdbc/Lnsw3) 设...

weixin_30280259的博客 270

Cadence Sigrity PowerSI实战:从.brd到S参数提取的完整避坑指南

本文详细介绍了使用Cadence Sigrity PowerSI进行信号完整性分析的完整流程,从.brd文件预处理到S参数提取的关键技巧。通过实战案例和避坑指南,帮助工程师高效解决高速PCB设计中的信号质量问题,提升仿真精度和设计效率。

carrot的博客 694

推荐项目 - Mondrian

Mondrian 是一个开源的多维数据集(OLAP)引擎,它允许您在关系数据库上进行分析操作。 ## 项目简介 Mondrian 提供了一个 SQL-like 查询语言,称为 MDX(多维表达式),用于在多维数据集中检索信息。它还提供了各种接口,使您可以轻松地将它集成到您的应用程序中。Mondrian 支持多种关系型数据库管理系统,包括 MySQL、Oracle、PostgreSQL、Micr

gitblog_00056的博客 449

Jetson Orin NX上PyTorch环境搭建与性能优化指南

本文详细指导如何在Jetson Orin NX上搭建高效的PyTorch开发环境。内容涵盖CUDA与cuDNN的“隐藏”配置、Miniconda虚拟环境管理、PyTorch for Jetson的正确安装与验证,并提供了电源模式设置、TensorRT加速、混合精度等关键性能优化实战技巧,帮助开发者充分释放边缘AI设备的算力。

weixin_29090089的博客 338

Calibre 3Dstack Flow Example(5-2)

本文详细介绍了Calibre3DSTACK工具在3D-IC设计验证中的应用。主要内容包括:1)连通性检查(LVS)规则编写,重点说明connected命令的使用方法和多文本标签处理;2)设计规则检查(DRC)实现,涵盖层间距检查和焊盘重叠检查;3)系统网表生成器操作流程,从芯片导入到网连通性定义;4)两种规则文件语法(扩展语法和传统语法)的编写示例;5)验证报告文件格式解析。通过具体案例演示了如何建立完整的3D-IC验证流程,包括芯片定义、装配操作、电气连接验证和物理规则检查等关键步骤,为3D-IC设计验证

u013620135的博客 2337

MDX&Mondrian介绍

MDX(Multidimensional Expressions)是多维数据库(OLAP 数据库)的查询语言。 Mondrian是一个开源项目。一个用Java写成的OLAP引擎。它用MDX语言实现查询,从关系数据库(RDBMS)中读取数据。然后经过java API以多维的方式对结果进行展示。它实现了MDX语言、XML解析、JOLAP规范。Mondrian的使用方式同JDBC驱动类似。可以非常方便的与现有的Web项目集成。

迷雾总会解 1222

simulink的Sine Wave 模块详解

模块是 Simulink 中的一个信号源模块,用于生成正弦波信号。该模块可以根据设定的幅值、频率、相位和偏移量,在仿真过程中产生周期性的正弦波形。模块都能提供强有力的支持。通过深入了解其参数的影响及结合 MATLAB 脚本的应用,读者可以更加有效地利用这一模块进行仿真和研究。此外,通过实际应用场景的扩展以及常见问题解答部分的帮助,能够更好地掌握。模块是一个非常实用的工具,适用于需要生成正弦波信号的各种场景。模块的参数,可以进一步增强学习体验。模块参数的影响,下面我们将详细探讨每个参数如何影响仿真结果。

xiaoheshang_123的博客 1052

foodmart mysql,数据仓库研究之二--mondrian入门

以前一直是用MS Anylize Service的,最近要做的项目是java的,小项目预算有限,所以想找一个开源的java的数据仓库解决方案来用用。在网上查了一下,发现了Mondrian。Mondrian是基于JAVA的数据仓库引擎,可以集成到web项目中,这一点最吸引我。另外与他搭配的表现层的方案也有不少选择,Jpivot是元老,pentaho,openi看起来是后起之秀。不管怎样,还是先研究一...

weixin_36333534的博客 327

知识蒸馏⚗️ | YOLOv5知识蒸馏实战篇

YOLOv5知识蒸馏教程

Coding... 9361

CKAD-CN考试之路----12

显然,对应的value都已经实现了加密.保存退出,等待pod重新创建。确认secret是否被加密。编辑secret文件。

Q先生 446

mondrian mysql 实例_mondrian入门 | 学步园

以前一直是用MS Anylize Service的,最近要做的项目是java的,小项目预算有限,所以想找一个开源的java的数据仓库解决方案来用用。在网上查了一下,发现了Mondrian。Mondrian是基于JAVA的数据仓库引擎,可以集成到web项目中,这一点最吸引我。另外与他搭配的表现层的方案也有不少选择,Jpivot是元老,pentaho,openi看起来是后起之秀。不管怎样,还是先研究一...

weixin_42107165的博客 412

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

mondrian入门

以前一直是用MS Anylize Service的,最近要做的项目是java的,小项目预算有限,所以想找一个开源的java的数据仓库解决方案来用用。    在网上查了一下,发现了Mondrian。Mondrian是基于JAVA的数据仓库引擎,可以集成到web项目中,这一点最吸引我。另外与他搭配的表现层的方案也有不少选择,Jpivot是元老,pentaho,openi看起来是后起之秀。不管怎样,

yangwl的专栏--商业智能blog 7563

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

OLAP简介及Mondrian快速入门

OLAP(On-Line Analysis Processing)在线分析处理是一种共享多维信息的快速分析技术;OLAP利用多维数据库技术使用户从不同角度观察数据;OLAP用于支持复杂的分析操作,侧重于对管理人员的决策支持,可以满足分析人员快速、灵活地进行大数据复量的复杂查询的要求,并且以一种直观、易懂的形式呈现查询结果,辅助决策。 上面是OLAP的一些不同的解释,本文将从以下几个方面介绍OLAP...

sgmcumt的博客 674

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

改造mondrian的构想

对OLAP引擎(主要是mondrian)的一些理解

Hello World 3429

Mondrian简介

出自:https://www.cnblogs.com/lk-fxtx/p/7067720.html 一、 Mondrian简介 Mondrian是一个开源项目。一个用Java写成的OLAP引擎。它用MDX语言实现查询,从关系数据库(RDBMS)中读取数据。然后经过javaAPI以多维的方式对结果进行展示。 Mondrian的使用方式同JDBC驱动类似。可以非常方便的与现有的Web项目集成...

HouYing 9878

mondrian mysql 实例_mondrian入门.doc

您所在位置:网站首页 > 海量文档&nbsp>&nbsp计算机&nbsp>&nbsp软件工程mondrian入门.doc7页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。 下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。2.该文档所得收入(下载+内容+预...

weixin_30853033的博客 213

数据仓库研究之三--JPivot入门

   上一篇文章研究了用Mondrian研究和提取数据,现在要研究如何展现数据了。  先从最基础的JPivot开始,JPivot可以说是Mondrian的姊妹项目,是基于Java的数据仓库表现层工具。这个项目的主页在http://jpivot.sourceforge.net/,那里除了JPvoit之外,还有一个比较有用的东西,据说是Mondrian的EClipse插件,上一篇文章中我是手工

infowain的专栏 1万+
上一篇: 数据仓库研究之一--为什么要用数据仓库
下一篇: 数据仓库研究之三--JPivot入门
infowain
博客等级 码龄25年 7粉丝 13原创
评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值