El servidor OLAP Mondrian
Mondrian es una de las aplicaciones más importantes de la plataforma Pentaho BI.
Mondrian es un servidor OLAP open source que gestiona comunicación entre una aplicación OLAP (escrita en Java) y la base de datos con los datos fuente.
Es decir, Mondrian actúa como “JDBC para OLAP”.
Instalación y configuración del servidor Mondrian Pentaho
La instalación y configuración básica del servidor Mondrian es muy fácil ya que la distribución binaria de Mondrian viene con una aplicación completa preconfigurada y los datos fuente vienen en una base de datos MS Access.
Hay que seguir los siguientes pasos sencillos para configurar Mondrian y ejecutarlo:
- Instalar Java SDK (versión 1.4.2 o posterior) – se puede descargarlo de http://java.sun.com/j2se/1.4.2/download.html
- Descarga y extrae la más reciente versión binaria del servidor Mondrian (http://mondrian.pentaho.org/). El nombre del fichero es Mondrian-version.zip. Este tutorial está basado en: Mondrian 2.3.2.8944
En este ejemplo Mondrian funciona con un servidor de aplicaciones Apache Tomcat (la misma aplicación está comprimida en un fichero mondrian.jar).
-
Configuración del fuente de los datos
Es imprescindible configurar la conexión a la base de datos correctamente para ejecutar y usar Mondrian.
La distribución binaria de Pentaho viene con una base de datos de prueba, que se llama MondrianFoodMart.mdb y está situada en la carpeta Demo del fichero Mondrian-xxx.zip
La base de datos MondrianFoodMart es muy fácil para instalar y configurar y además tiene arquitectura típica del almacén de datos. Esta base de datos y arquitectura puede servir como un ejemplo real que se encuentra a menudo en varias empresas y también una guía como crear aplicaciones OLAP con la plataforma Pentaho Business Intelligence.
Es necesario crear una fuente de datos ODBC que apunte a la base de datos MondrianFoodMart.mdb y nombrar la fuente MondrianFoodMart. Así este base de datos se comunicara a través de JDBC con el servidor Mondrian usando las siguientes letras de conexión: "jdbc:odbc:MondrianFoodMart".
Con la distribución binaria de Mondrian es fácil instalar los ejemplos con otras fuentes de datos y bases de datos.
Hay un fichero FoodMartCreateData.sql (carpeta Demo del archivo Mondrian-version.zip) que contiene sentencias SQL necesarias para insertar datos a cualquiera base de datos relacional. Solo hay que tener en cuenta de que la estructura de las tablas y la esquema del base de datos debe ser creada manualmente.
Tambien se puede usar la aplicación MondrianFoodMartLoader. En el tutorial Pentaho de almacen-datos.com hay instrucciones y un ejemplo que muestra como configurar y usar Pentaho con una base de datos Oracle.
- Ejecución de Mondrian en un servidor Web
Cosas y detalles que se debe considerar:
- Instale un servidor Web – en este guia era Apache Tomcat 5.5.12
- Descomprima el archivo mondrian.war y mueva los ficheros a la localización de instalación del servidor Tomcat (por ejemplo TOMCAT_HOME/webapps/mondrian).
El archive mondrian.war contiene todas las bibliotecas necesarias para ejecutar la aplicacion. Estos son: jPivot para crear unas tables dinamicas, jFreeChart, XML, XSL, TLD, DTD ficheros de configuración y las paginas JSP
- Modifique los ficheros mondrian.properties y web.xml (de la carpeta WEB-INF) y cambie los parámetros de conexión de base de datos.
Modifique también los ficheros .jsp localizados en la carpeta WEB-INF/queries y ponga los correctos parámetros del base de datos.
Also, make sure that the database source and connection paramteres are correctly set up in the .jsp files from the WEB-INF/queries folder.
La aplicacion java connectada al servidor Mondrian debe ser a partir de ahora accesible desde http://127.0.0.1:8080/mondrian
Mondrian pagina principal: 
Mondrian jPivot: 
Sentencia MDX que extrae datos para la tabla dinámica jPivot:
select {[Measures].[Unit Sales], [Measures].[Store Cost], [Measures].[Store Sales]} ON COLUMNS,
Order(
Union(
Union(Crossjoin({[Promotion Media].[All Media]}, {[Product].[All Products]}),
Crossjoin({[Promotion Media].[All Media]}, [Product].[All Products].Children)),
Union(
Crossjoin([Promotion Media].[All Media].Children,
{[Product].[All Products]}),
Crossjoin([Promotion Media].[All Media].Children,
[Product].[All Products].Children)
)
),
[Measures].[Unit Sales], DESC) ON ROWS
from [Sales]
where [Time].[1997]
|