Introducción a JPivot

0
40940

Introducción a JPivot

 

Introducción

JPivot es una librería de componentes JSP que se
utiliza para construir tablas OLAP generadas de forma
dinámica. Este tipo de tablas es de gran utilidad ya que
permite mostrar los resultados de las consultas filtrando por los
campos de la tabla de
manera que se puedan quitar y poner distintos criterios de
búsqueda de los datos, consiguiendo un amplio abanico de
posibidades. Consultar la API aquí

OLAP: Es el acrónimo en inglés
de procesamiento analítico en línea
(On-Line Analytical Processing). Es una
solución utilizada en el campo de la Inteligencia de
Negocios (Business Intelligence)
cuyo objetivo es agilizar la consulta de grandes cantidades de datos.
Para ello utiliza estructuras multidimensionales (o Cubos OLAP) que contienen datos
resumidos de grandes Bases de Datos o Sistemas
Transaccionales (OLTP).
Se usa en informes de negocios
de ventas, márketing, informes de dirección, minería de datos
y áreas similares. Fuente: Wikipedia

Los cubos OLAP se estructuran en ficheros XML y en ellos se
definen
las dimensiones y las conexiones entre los datos. Estos XML a menudo
son complejos de hacer a mano por lo que existen herramientas que de
forma gráfica nos facilitan la tarea. Una de ellas es la
aplicación open source Pentaho Cube Designer.

Para desarrollar este tipo de tablas pivotantes es necesaria
la
arquitectura OLAP Mondrian contenida en la plataforma Pentaho. Esta
arquitectura que corre sobre un servidor web nos permite la
comunicación entre
aplicaciones OLAP con bases de datos. El
núcleo del servidor Mondrian es similar a JDBC
pero exclusivo para OLAP. Proporciona la conexión a la base
de datos y ejecuta
las sentencias SQL. 

Ya hemos visto otras opciones de tablas
dinámicas y gráficas en Javascript por
parte de Daniel. La
principal diferencia de
JPivot respecto a otras librerías en Javascript es que
JPivot únicamente realiza la consulta de los datos
necesarios, es decir los que se muestran en ese momento a diferencia de
las
librerías de Javascript que contienen todos los datos de la
consulta y los muestran de diferente manera en función de
los filtros aplicados. 

Entorno

  • Windows XP Pro SP2
  • JDK 1.5.0_4
  • Apache Tomcat 6.0
  • Servidor Mondrian 3.0.0
  • Pentaho Cube Designer 0.7.2.

Instalación

Mondrian

Descargamos la última versión de
sourceforge (mondrian-3.0.0.10550.zip)
y la descomprimimos. Dentro de la carpeta lib
está el mondrian.war que colocamos en %TOMCAT_HOME%\webapps.
Arrancamos el Tomcat para que haga el despliegue del war y cree el
directorio webapps\mondrian. Al arrancar el servidor
dará un error ya que no tenemos configurada ninguna base de
datos. Esta versión contiene una base de datos de prueba en
Access pero nosotros lo configuraremos
para que utilice MySQL. Para ello editamos el fichero
mondrian.properties que se
encuentra en WEB-INF. Dentro de este fichero habría que
modificar la
última línea (sustituir NOMBRE_BD,
USUARIO y PASSWORD por las
propiedades correspondientes). 

mondrian.test.connectString=Provider=mondrian;Jdbc=jdbc:mysql://localhost/NOMBRE_BD?user=USUARIO;password=PASSWORD;JdbcDrivers=com.mysql.jdbc.Driver;

Construcción de un Cubo OLAP

Para crear los cubos OLAP de forma gráfica vamos a
utilizar la aplicación Pentaho Cube Designer. Nos
descargamos la última versión de sourceforge (CubeDesigner-0.7.2.0_Win32.zip)
y la descomprimimos. Ejecutamos el CubeDesigner.exe y creamos un cubo
nuevo desde File > New Cube Schema. 

Lo primero será indicar la fuente de datos en la
opción (‘Select a data source’) de donde queremos sacar la
información. En este tutorial vamos a utilizar los datos de
la encuesta salarial 

.

Una vez confugurada la conexión a la base de datos,
le damos un nombre y una descripción al cubo.

En la siguiente pantalla nos mostrará las tablas
que tenemos en la base de datos. Para ir montando la consulta que
queremos hacer bastará arrastrar las tablas que queramos al
 panel central (se irá rellenando el campo FROM en
el árbol ROOTQUERY). Una vez añadidas las tablas
seleccionamos los campos que queremos consultar (campos SELECT)
pinchando en los campos correspondientes de cada tabla. Por
último falta relacionar las tablas para conformar los
criterios de la consulta (campos WHERE). El editor nos facilita esta
tarea uniendo las foreign keys de las tablas con un simple arrastre. El
resultado quedaría así:

El siguiente paso será definir las medidas
(measures) que
básicamente son los datos que se van a mostrar en la tabla
JPivot y que en función de los filtros (dimensions) que
posteriormente definamos nos van a permitir definir los criterios de
consulta de los datos. 

El siguiente paso es crear las dimensiones del cubo que nos
perimitirán definir los criterios de búsqueda o
filtros de los datos.

Por útltimo grabamos el XML generado. La
aplicación Cube Designer es muy útil para generar
el grueso del fichero XML que nos define la estructura del cubo OLAP
pero no permite definir muchos de los parámetros disponibles
por lo que podemos editarlo a mano.
Para nuestra consulta de salarios es necesaria una
fórmula (Salario total / Nº Muestras) que
metemos en la etiqueta CalculatedMember. El XML que
representa el cubo OLAP es el siguiente:



    
        
            
                

Mostrar los datos con JPivot

Una vez creado el XML para nuestro cubo OLAP lo guardamos
dentro del directorio mondrian que instalamos anteriormente, por
ejemplo en WEB-INF/queries/UsersSalaryRange.xml. En ese mismo
directorio hay varias JSPs con algunas etiquetas de la
libreríra JPivot de prueba junto con un el archivo
FoodMart.xml que
es un cubo para hacer pruebas con la base de datos que viene por
defecto. Nosotros utilizaremos la página mondrian.jsp para
nuestras pruebas.
Editamos la JSP modificando los parámetros de
conexión a la base de datos. Hay que decir que se pueden
crear datasources para la conexión a la base de datos bien
en el server.xml del Tomcat o en eldatasources.xml que viene
en el servidor Mondrian pero de momento vamos a utilizar los atributos
de la etiqueta jp:mondrianQuery.

 select
{[Measures].[Sueldo]} on columns, {([Puesto Actual])} on rows from
UsersSalaryRange 

Los parámetros importantes a configurar son:

jdbcDriver=»com.mysql.jdbc.Driver»: Indica el driver de
conexión a la base de datos

jdbcUri=»jdbc:mysql://localhost/NOMBRE_BD?user=USUARIO&password=PASSWORD»:
URL de conexión indicando el nombre de la base de datos y el
usuario y password de autenticación.

catalogUri=»/WEB-INF/queries/UsersSalaryRange.xml»: Path donde
se encuentra el cubo OLAP.

Dentro de la etiqueta jp:mondrianQuery podemos hacer consultas
SQL seleccionando los criterios (Dimensions) que consideremos, en este
caso en las columnas de la tabla sacamos el promedio de sueldos y en
las filas los puestos.

En las páginas se muestra un menú donde
ir jugando con todos las opciones que permite JPivot filtrando por los
campos que queramos, sacar gráficas, exportar a
PDF o a XLS, intercambiar ejes para visualizar los datos de formas
diferentes si están por filas o columnas, etc.

Arrancamos el Tomcat y metemos la siguiente url
http://localhost:8080/mondrian. La pantalla que nos sale tiene esta
pinta.

Como hemos utilizado el fuente mondrian.jsp accedemos a la
página desde el primer enlace (JPivot pivot table).

En la imagen anterior ya se pueden ver los datos que hemos
hecho en la consulta filtrando el ‘Sueldo’ por el ‘Puesto Actual’.
También se muestra la gráfica de barras que se
accede desde el menú .

Llegados a este puntolas posibilidades de consulta
que permite JPivot son tantas como se nos ocurran. Vamos a sacar varias
consultas jugando con los datos para ver todo lo que nos ofrece la
herramienta.

Promedio de salarios filtrado por países
con el número de muestras registradas ordenado de forma
ascendente

En la tabla podemos observar los países donde se
pagan sueldos más altos pero donde el número de
muestras aún es demasiado bajo como para que la
estadística sea muy fiable.

Promedio de sueldos filtrado por Puesto Actual (Analista/Programador y
Programador),
y Nivel de Estudios. (Ing. Superior/Licenciatura y Módulo de
grado superior)

Promedio de salarios filtrado por Provincia (sacamos
sólo Madrid y Barcelona), Tipo de Empresa
(Consultoría y Software) y Puesto Actual
(Analista/Programador y Programador

Para indicar los filtros que se quieren aplicar en la tabla,
se hace mediante el botón . Esta opción nos
muestra los filtros (Dimensions)que indicamos anteriormente
en el cubo OLAP. Para añadirlos a la consulta
bastará con seleccionar los iconos que se encuentran
más a la izquierda de la descripción del filtro
dependiendo de si se quiere añadir el filtro por filas o por
columnas.

Conclusiones

El mundo del Business Inteligence y la plataforma
Pentaho es tan amplio que da para muchos tutoriales que iremos
publicando poco a poco. De momento se puede comprobar que JPivot es una
herramienta muy potente y que ofrece muchas posibilidades ya que con
una única tabla puedes consultar todos los datos que quieras
montando los cubos OLAP.

Los datos relativos al negocio de una organización
son una base fundamental para su buen funcionamiento por lo que debemos
tomárnoslos muy en serio. Gracias a herramientas como la que
hemos visto en este tutorial esto ya no es un problema.

DEJA UNA RESPUESTA

Por favor ingrese su comentario!

He leído y acepto la política de privacidad

Por favor ingrese su nombre aquí

Información básica acerca de la protección de datos

  • Responsable:
  • Finalidad:
  • Legitimación:
  • Destinatarios:
  • Derechos:
  • Más información: Puedes ampliar información acerca de la protección de datos en el siguiente enlace:política de privacidad