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

来源:互联网 发布:linux中 dump函数 编辑:程序博客网 时间:2024/04/30 02:38

 

  上一篇文章研究了用Mondrian研究和提取数据,现在要研究如何展现数据了。

  先从最基础的JPivot开始,JPivot可以说是Mondrian的姊妹项目,是基于Java的数据仓库表现层工具。这个项目的主页在http://jpivot.sourceforge.net/,那里除了JPvoit之外,还有一个比较有用的东西,据说是Mondrian的EClipse插件,上一篇文章中我是手工撰写schema的,这个插件应该有类似MS的图形化设计界面吧,以后再研究这个插件吧,言归正传,今天研究的主题是JPivot。

  首先注意到两个要点:

  JPivot 使用 WCF (Web Component Framework)  ,基于XML/XSLT来渲染Web UI组件。

  JPivot是完全基于taglib的。

 

  1. 寻找突破口

从哪里开始呢,当然是先从demo入手了,在浏览器里面打开demo,点击其中的例子,发现他们指向的链接是

http://localhost/mondrian/testpage.jsp?query=mondiran

http://localhost/mondrian/testpage.jsp?query=xmla

http://localhost/mondrian/testpage.jsp?query=fourthier

这下比较清楚目标了,先研究一下testpage.jsp吧。

 

2. testpage.jsp研究

在testpage.jsp中,比较重要的一段是

<%-- include query and title, so this jsp may be used with different queries --%>
<wcf:include id="include01" httpParam="query" prefix="/WEB-INF/queries/" suffix=".jsp"/>
<c:if test="${query01 == null}">
  <jsp:forward page="/index.jsp"/>
</c:if>

<%-- define table, navigator and forms --%>
<jp:table id="table01" query="#{query01}"/>

其中<wcf:include id="include01" httpParam="query" prefix="/WEB-INF/queries/" suffix=".jsp"/>取得参数query的值,并且匹配位置在/WEB-INF/queries/,扩展名是jsp的文件。

另一句<jp:table id="table01" query="#{query01}"/>指明了query的名称是query01。

注意这两个query是不一样的,wcf的query是http的参数名称叫做query,而jp的query是mondrian的query对象。

在testpage.jsp的后面还定义了form,navigator,chart等等,这里先不做深入研究了。

 

2.mondrian.jsp研究

下面看看testpage.jsp用到的mondrian.jsp,打开/WEB-INF/queries/mondrian.jsp,哈哈,真是似曾相识啊。这里定义了mondrian的query,它的id是query01,还有jdbc的相关信息。以及这个query对应的mdx查询select语句。

再打开xmla.jsp发现也是同样的结构,这样就比较清楚了。下面就可以依葫芦画瓢,进行我们的测试了。

 

3.测试

首先写一个mondriantest.jsp放在/WEB-INF/queries目录

<%@ page session="true" contentType="text/html; charset=ISO-8859-1" %>
<%@ taglib uri="http://www.tonbeller.com/jpivot" prefix="jp" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>

<jp:mondrianQuery id="query01" jdbcDriver="com.mysql.jdbc.Driver" jdbcUrl="jdbc:mysql://localhost/mondrian" catalogUri="/WEB-INF/queries/mondriantest.xml"
   jdbcUser="root" jdbcPassword="" connectionPooling="false">

select {[Measures].[Salary]} ON COLUMNS, {[Employee].[employeeId].Members} ON ROWS from CubeTest

</jp:mondrianQuery>

<c:set var="title01" scope="session">Test Query uses Mondrian OLAP</c:set>

这里用到的mondriantest.xml就是上一篇文章中写的那个。

然后在浏览器地址栏输入http://localhost/mondrian/testpage.jsp?query=mondriantest,大功告成,看到我们期望的画面了。

结果图示