Przykład tabeli przestawnej JPivot połączonej z serwerem Open Source Mondrian OLAP

W tej lekcji tutoriala stworzymy dynamiczną tabelę przestawną z przykładowymi danymi z poprzednich lekcji tutoriala, która będzie połączona z serwerem Mondrian OLAP.
Do stworzenia takiego crosstaba wykorzystane zostaną tagi JSP z bibliotek zewnętrznych jpivot (JPivot i WCF). Do ukończenia tej lekcji niezbędna będzie podstawowa wiedza z zakresu Java i JSP w rozwiązaniach Webowych.

Biblioteki tagów wraz z dokumentacją Jpivot i WCF można znaleźć tutaj:

  • Tagi Jpivot JSP
  • Tagi WCF JSP


    Tabela przestawna JPivot z niniejszego tutoriala zostanie wyświetlona przez stronę JSP o nazwie gg_crosstab1.jsp.

    W celu stworzenia strony JSP z jpivot należy :
  • Skonfigurowac połączenie MDX (o połączeniu MDX więcej informacji we wcześniejszych lekcjach tutoriala). Połączenie z relacyjną bazą danych powinno być przechowywane w pliku JSP. W niniejszej lekcji będzie to plik /WEB-INF/queries/etltools.jsp.

      Plik etltools.jsp file ma następującą zawartość:

      <%@ 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="oracle.jdbc.driver.OracleDriver"
      	jdbcUrl="jdbc:oracle:thin:dwuser/dwpwd1@127.0.0.1:1521:xe" 
      		catalogUri="/WEB-INF/queries/EtlTools.xml">
      select 	{[Measures].[Total Turnover], [Measures].[Total Weight]} ON columns,
        {[TIME].[All Time]} ON rows from EtlTools
      </jp:mondrianQuery>
      
      <c:set var="title01" scope="session">Testowe zapytanie używające Mondrian OLAP</c:set>
      

      Najistotniejszą częścią pliku konfiguracyjnego jest sekcja (tag) jp:mondrianQuery, który definiuje dostęp danych źródłowych Mondrian OLAP. Zawiera polecenia MDX, które definiują dane, które będą pobrane z Mondrian. W naszym przykładzie prosta analiza będzie się składała z wymiaru czasu (time) oraz dwóch miar: obrót (turnover) i waga (weight).
      Warto zwrócić uwagę na fakt, że plik ten odwołuje się do pliku konfiguracyjnego Mondrian, o nazwie EtlTools.xml, którego tworzenie zostało szeroko omówione w lekcji tutoriala Pentaho Cube Designer.


  • Plik gg_crosstab1.jsp.
      Kod pliku JSP który wygeneruje crosstab JPivot (najważniejsze fragmenty zaznaczone zostały na czerwono):
      Kod pliku JSP który wygeneruje crosstab JPivot (najważniejsze fragmenty zaznaczone zostały na czerwono)
    • W pierwszych liniach pliku gg_crosstab1.jsp umieszczone zostały tagi jsp dla wcf, jpivot i bibliotek standardowych java. Poniżej standardowy nagłówek html oraz definicja 'body', czyli głównej części dokumentu.

    • Poniższa linia zawiera link do pliku definicji tabeli przestawnej css. Wygląd graficzny tabeli przestawnej JPivot może być dostosowany poprzez edycję pliku mdxtable.css.
      <link rel="stylesheet" type="text/css" href="jpivot/table/mdxtable.css">

    • W poniższych liniach zawarta jest definicja zapytania Mondrian (Mondrian Query definition) i sprawdzenie czy definicja ta została pomyślnie załadowana. Jeżeli nie, to przeglądarka zostanie przekierowana do strony głównej index.jsp.

      <%-- query definition --%>
      <wcf:include id="include01" httpParam="query" prefix="/WEB-INF/queries/" suffix=".jsp"/>
      
      <c:if test="${query01 == null}">
        <jsp:forward page="/index.jsp"/>
      </c:if>
      
    • Tabela przestawna zostaje zainicjowana następującym poleceniem (po wydaniu poniższego polecenia zostaje ona załadowana do pamięci, a nie widoczna na ekranie, co następuje dopiero po wykonaniu polecenia render):
      <jp:table id="table01" query="#{query01}"/>
      
    • Aby wyświetlić crosstaba na ekranie przeglądarki należy wysłać następujące polecenie:
      <wcf:render ref="table01" xslUri="/WEB-INF/jpivot/table/mdxtable.xsl" xslCache="true"/>
      
  • Dodatkową rzeczą, o której należy pamiętać aby stworzyć crosstaba JPivot to dodanie filtra JPivotController do pliku WEB-INF/web.xml w konfiguracji Apache Tomcat:
      <filter-mapping>
        <filter-name>JPivotController</filter-name>
        <url-pattern>/gg_crosstab1.jsp</url-pattern>
      </filter-mapping>
    


  • W tym momencie prosta tabela przestawna JPivot jest gotowa do użycia i analiz. Można ją uruchomić w następujący sposób (przy założeniu, że Tomcat nasłuchuje na porcie 8000): http://127.0.0.1:8000/mondrian/gg_crosstab1.jsp?query=etltools


    Przykład tabeli przestawnej JPivot:
    Przykład tabeli przestawnej JPivot


    W nadchodzącej lekcji tutoriala Pentaho JPivot zajmiemy się sformatowaniem liczb w kostce OLAP i dodaniem opcji takich jak sortowanie, edycja zapytania MDX, drążenie danych, wykresy, eksport do różnych formatów i innych użytecznych funkcji.

    
    Nawigator JPivot Edytor MDX