软件版本 Mondrian 3.6.1
关于网上的Mondrian的教程有很多,不过好像都是copy的都长的一个样,并且都是基于Jpivot来进行分析和阐述的,今天就和大家来聊一聊Mondrian(关系型多维分析服务器 ROLAP),其实更准确的说法应该是翻译器(个人观点),Mondrian本身是不存储数据的,通过MDX语句(一个类似于SQL的查询语言)来获取数据,Mondrian 运行的时候要连数据库,并且还要有一个数据模型配置文件(Mondrian叫schema),其实就是一个取数据的规则;由此可知Mondrian只不过是把MDX 翻译成了SQL然后从数据库中把数据拿出来给用户,当然这中间Mondrian还做一很多工作(要不太慢了)。关于什么是多维数据集,什么是MDX,以及Mondrian的架构,我们会在后面的文章里结合实例逐个讲述。
接触过Pentaho、Saiku、Jpivot的都应该知道他们都用到了Mondrian做为其多维数据处理的服务器,网上的很多关于Mondrian的文章也都是以Jpivot来进行分析的,不过Jpivot已经被抛弃了作者也不再更新了,并且Jpivot只能支持到Mondrian3.5 所以对于新版本的Mondrian一定是不能用Jpivot了(不过Jpivot有一个替代品Pivot4j这个还在持续维护),这里还是推荐大家用Saiku或者Pivot4j,有兴趣的同学可以研究一下它们的源码(https://github.com/),你会发现他们的设计模式和结构很相似且和Jpivot大不相同。如果我们不想用Saiku、pivot4j 这样现成的东西(毕竟有很多东西我们用不到)那么如何把Mondrian 集成到我们自己的应用中去,或者我们想构建自己的多维分析服务器应该怎么做呢!下面我们就以把Mondrian集成到WebApp中以例来讲一下把Mondrian集成进去是多么的简单。
首先 新建一个Web工程如图
然后把所需要的Jar包引入工程(这些包可以在Saiku或者pivot4j中找到也可以自己从网上下载) 如图
第三步 在工程的WEB-INF目录下新建一个xml文件取名为datasources.xml
这里需要说明一下我事先在Mysql数据库中新建一个alen数据库,库中有三张表
这里的datasources.xml中配置的就是连接Mysql数据库的信息内容如下
<?xml version="1.0" encoding="UTF-8"?> <DataSources> <DataSource> <DataSourceName>alen</DataSourceName> <DataSourceDescription>this is my first mondiran application</DataSourceDescription> <URL>http://localhost:8083/xmla</URL> <DataSourceInfo><![CDATA[Provider=mondrian;Jdbc=jdbc:mysql://localhost:3306/alen?user=root&password=admin&useUnicode=true&characterEncoding=utf8;JdbcDrivers=com.mysql.jdbc.Driver]]></DataSourceInfo> <ProviderName>mondrian</ProviderName> <ProviderType>MDP</ProviderType> <AuthenticationMode>Unauthenticated</AuthenticationMode> <Catalogs> <Catalog name="cname"> <Definition>/WEB-INF/schema/demo.mondrian.xml</Definition> </Catalog> </Catalogs> </DataSource> </DataSources>
DataSourceName:自定义保持唯一
URL:配置的是Web向外发布的访问接口,要和Web下面配置的Servlet保持一致;
DatasourceInfo:这里配置的是访问数据库的信息
Definition: 数据模型配置文件所在位置(Schema)
这里的DataSource可以配置多个(为了简单这时只配置了一个)。
注意:这里的XML每个节点都不能省要不会报错
数据源有了,下面就是数据模型的配置了,也就是上面说的那个schema 可以使用schema-workbench工具来配置非常方便,友好 工具界面如图:
配置好数据模型文件后把它放到WEB-INF/schema/目录下这也是datasource.xml中配置的
最后一步,数据有了,数据模型也有了,下面就是怎么访问这些数据 了 你只需要配置一个Servlet就可以了
修改web.xml 向其加入mondrian Servlet 内容如下
<servlet> <servlet-name>mondrian</servlet-name> <servlet-class>mondrian.xmla.impl.MondrianXmlaServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>mondrian</servlet-name> <url-pattern>/xmla</url-pattern> </servlet-mapping>
好了大功告成 把你的WebApp部署到Tomcat中试试吧!
果断部署运行 打开 浏览器 输入 http://localhost:8083/mondrianweb/xmla
嗯,这是怎么回事 哪里配置错了吗,no no 恭喜你 已经大功告成了,只不过 你的访问方法不对这个接口是基于SOAP的所以只能以调用Webservice的方式调用 不过这里我们可以通过 Olap4j来访问 新建Java工程 引入包 olap4j,olap4j-xmla,xercesImpl 新建包含main方法的测试类内容如下
public static void main(String[] args) throws ClassNotFoundException, SQLException { // TODO Auto-generated method stub //callschema(); callxmla(); } public static void callxmla() throws ClassNotFoundException, SQLException{ Class.forName("org.olap4j.driver.xmla.XmlaOlap4jDriver"); Connection connection = DriverManager.getConnection( "jdbc:xmla:Server=http://localhost:8083/mondrianweb/xmla"); OlapConnection olapConnection = connection.unwrap(OlapConnection.class); OlapStatement statement = olapConnection.createStatement(); CellSet cellSet = statement.executeOlapQuery( "SELECT {[Measures].[Totalcount]} ON 0," + "{[customer].[gender].members} on 1" + "FROM [prd]"); for (Position row : cellSet.getAxes().get(1)) { for (Position column : cellSet.getAxes().get(0)) { for (Member member : row.getMembers()) { System.out.println("row members:"+member.getUniqueName()); } for (Member member : column.getMembers()) { System.out.println("column members:"+member.getUniqueName()); } final Cell cell = cellSet.getCell(column, row); System.out.println("cell value:"+cell.getValue()); System.out.println(); } } }
运行出现如下结果:
row members:[customer].[1]
column members:[Measures].[Totalcount]
cell value:79.0
row members:[customer].[2]
column members:[Measures].[Totalcount]
cell value:96.0
至此 我们就把Mondrian集成到了我们自己的WebApp中 OK 今天 就到这里吧!
本人接触Pentaho时间不长如果文中有错误望高手指出谢谢!
如果对文中有疑问请联系我
下期预告:Mondrian 集成 另一种方法
相关推荐
Saiku是另一个开源的OLAP客户端,与Pentaho Mondrian高度兼容。Saiku提供了Web界面,支持多维度的数据钻取、切片和切块操作。它的特点是直观易用,支持多用户协作,并可以通过REST API进行扩展和集成,是开源社区中...
Mondrian是Pentaho Analysis Services的核心组件,一个功能强大的多维分析(OLAP)引擎,尤其适用于基于关系数据库的OLAP处理,即ROLAP(Relational OLAP)。其设计目的是为了简化复杂的数据分析流程,通过利用关系...
Pentaho是一款开源的企业级商业智能(BI)平台,它提供了数据集成、报表、分析和可视化等一系列功能,帮助企业从各种数据源中提取、转换、加载(ETL)数据,并创建直观的交互式报告和仪表盘。在本教程中,我们将深入...
它包括多个组件,如Pentaho Data Integration (Kettle)、Pentaho Analysis ( mondrian )、Pentaho Report Designer 和Pentaho Dashboard等,旨在提供一个统一的商业智能解决方案。社区版是免费的,允许用户访问大...
Pentaho BI Server是一款开源的商业智能(BI)平台,它提供了一整套工具来处理数据集成、报表、分析和信息展示。通过源码分析,我们可以深入理解其工作原理和设计模式,这对于开发者和定制化需求者来说尤其有价值。 ...
1. **数据集成(Data Integration)**:这是Pentaho平台的一个核心组件,主要负责从各种数据源抽取数据,进行清洗、转换和加载到目标系统中。Pentaho Data Integration(Kettle)是一种强大的ETL(Extract Transform ...
Pentaho是一款开源的企业级商业智能(BI)平台,它集成了数据提取、转换、加载(ETL)、数据分析和报告等功能,为用户提供了一套完整的数据处理工具。以下是针对该主题的详细知识解析: 1. **Pentaho Data ...
该项目由多个组件构成,包括Kettle(数据集成工具)、Pentaho Data Integration(PDI)、Pentaho Reporting、Pentaho Analysis(Mondrian)以及Pentaho Dashboard等,这些组件协同工作,为用户提供完整的BI体验。...
7. **Pentaho_Technical_Whitepaper-zh-CN-1-6.htm**:这是一份技术白皮书,详细阐述了Pentaho的技术架构和核心特性,包括数据集成工具Kettle、分析工具Pentaho Analysis (Mondrian)以及报表设计工具Pentaho Report ...
Pentaho是一款开源的企业级商业智能(BI)套件,提供了数据集成、报表、分析和可视化等一系列功能,帮助企业从各种数据源中提取、转换、加载(ETL)数据,并进行数据分析。作为初学者,掌握Pentaho能帮助你快速构建...
2. **Pentaho Analysis (Mondrian)**:Mondrian是一个开源的在线分析处理(OLAP)服务器,用于快速分析大量数据。它支持多维数据模型,使得用户可以通过钻取、切片、切块和旋转数据来深入理解业务情况。Mondrian通常...
Mondrian是由Pentaho公司维护的一个开源OLAP服务器,它支持SQL标准的MDX(MultiDimensional eXpressions)查询语言,允许用户对多维数据进行复杂的分析操作。Mondrian通过解析MDX查询,将它们转化为SQL语句,进而从...
6. **嵌入式能力**:Pentaho Reporting可以无缝集成到其他应用程序中,比如Java应用程序、Web应用或企业级BI平台,提供一致的用户体验。 7. **数据钻取和交互性**:用户可以通过点击报表中的元素进行数据钻取,深入...
6. **与Pentaho BI Suite集成**:与Pentaho Report Designer, Mondrian OLAP服务器等其他组件无缝集成,使得整个数据仓库和BI环境的一体化操作成为可能。 7. **版本控制**:在团队环境中,5.1.5-jhyde版本可能支持...
该平台的主要目的是集成一系列企业级BI产品、开源软件、API等组件,以便于开发商业智能应用。Pentaho不仅包括诸如Kettle、Report、Mondrian、Dashboard等工具,还提供了基于Web服务器的平台,支持报表制作、数据分析...
在Web项目中,Mondrian通常与Pentaho Data Integration(Kettle)、Pentaho BI Server等工具结合使用,提供强大的数据分析和报表生成能力。下面将详细介绍Mondrian在Web项目中的应用及其报表开发的关键知识点。 一...
综上所述,《Mondrian in Action》是一本针对有志于精通Mondrian OLAP引擎和Pentaho集成应用的专业人士的实用指导书,它不仅提供了技术细节和操作指南,也强调了商业智能分析在企业中的实际应用。
Pentaho采用了模块化设计,主要由数据集成(Kettle,又称PDI)、报表(Pentaho Report Designer,PRD)、分析( Mondrian,OLAP服务器)和数据可视化(Pentaho BI Server,提供Web界面)等部分组成。这些模块可以...