Mondrian教程.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Mondrian教程

1. Mondrian是什么? Mondrian是一个开源项目。一个用Java写成的OLAP引擎。它用MDX语言实现查询,从关系数据库(RDBMS)中读取数据。然后经过Java API以多维的方式对结果进行展示。 Mondrian的使用方式同JDBC驱动类似。可以非常方便的与现有的Web项目集成 1.1 Mondrian的体系结构(Architecture) Mondrian OLAP 系统由四个层组成; 从最终用户到数据中心, 顺序为: 1.1.1 表现层(the presentation layer) 1.1.2 维度层(the dimensional layer) 1.1.3 集合层(the star layer) 1.1.4 存储层(the storage layer) 结构图如下: 1.1.1 Jpivot表现层 JPivot?是Mondrian的表现层TagLib,您可以通过访问jpivot的官方网站/以获得更多的帮助及支持 ·jpivot使用XML/ XSLT渲染OLAP报表: JPivot?使用 WCF (Web Component Framework)? ,基于XML/XSLT来渲染Web UI组件。这使它显得十分另类。不过,OLAP报表这种非常复杂但又有规律可循的东西,最适合使用XSLT来渲染。 ·jpivot完全基于JSP+TagLib: JPivot另外一个可能使人不惯的地方是它完全基于taglib而不是大家熟悉的MVC模式。 但它可以很方便的将多维数据展示给最终用户,如下表格: jpivot其实是一个自定义jsp的标签库。它基于XML/XSLT配置来生成相应的html。所幸的是,我们并不需要了解太多关于这方面的内容,我们只要掌握相应jsp标签的使用即可。 1.1.2 维度层(the dimensional layer) 维度层用来解析、验证和执行MDX查询要求。 一个MDX查询要通过几个阶段来完成:首先是计算坐标轴(axes),再者计算坐标轴axes 中cell的值。 为了提高效率,维度层把要求查询的单元成批发送到集合层,查询转换器接受操作现有查询的请求,而不是对每个请求都建立一个MDX 声明。 1.1.3 集合层(the star layer) 集合层负责维护和创建集合缓存,一个集合是在内存中缓存一组单元值, 这些单元值由一组维的值来确定。 维度层对这些单元发出查询请求,如果所查询的单元值不在缓存中,则集合管理器(aggregation manager)会向存储层发出查询请求 1.1.4 存储层(the storage layer) 存储层是一个关系型数据库(RDBMS)。它负责创建集合的单元数据,和提供维表的成员。 1.2 Mondrian API Mondrian 为客户端提供一个用于查询的API 因为到目前为止,并没有一个通用的用于OLAP查询的API,因此Mondrian提供了它私有的API. 尽管如此,一个常使用JDBC的人将同样发现它很熟悉.不同之处仅在于它使用的是MDX查询语言,而非SQL 下面的java片段展示了如何连接到Mondrian,然后执行一个查询,最后打印结果. import mondrian.olap.*; import java.io.PrintWriter; Connection connection = DriverManager.getConnection( ????Provider=mondrian; + ????Jdbc=jdbc:odbc:MondrianFoodMart; + ????Catalog=/WEB-INF/FoodMart.xml;, ????null, ????false); Query query = connection.parseQuery( ????SELECT {[Measures].[Unit Sales], [Measures].[Store Sales]} on columns, + ???? {[Product].children} on rows + ????FROM [Sales] + ????WHERE ([Time].[1997].[Q1], [Store].[CA].[San Francisco])); Result result = connection.execute(query); result.print(new PrintWriter(System.out)); 与JDBC类似,一个Connection由DriverManager创建, Query 对象类似于JDBC 的Statement,它通过传递一个MDX语句来创建.Result对象类似于JDBC的ResultS

文档评论(0)

zhuwenmeijiale + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7065136142000003

1亿VIP精品文档

相关文档