Get it on Google Play

Business Intelligence: Analizando cubos OLAP con Pivot4J Analytics

28-07-2015
 

Los cubos OLAP(On-Line Analytical Processing) se utilizan en Business Intelligence para agilizar la consulta de grandes cantidades de datos, por ejemplo, informes de ventas, marketing, informes de dirección, etc.

Los cubos OLAP tienen muchas ventajas:

– Son fáciles de entender para el usuario. Una vez hemos creado el cubo, el usuario se puede crear sus propios reports y analizar los datos sin necesidad de soporte técnico. Además, los cubos es un lenguaje con el que se comunican bien usuarios y técnicos.

– Son fáciles de mantener para los técnicos. Con la cantidad de herramientas que tenemos podemos mantener los cubos OLAP fácilmente.

– Rapidez. La estructura con la que se guardan los datos en un cubo OLAP nos permite hacer consultas muy rápidas.

Montando los cubos OLAP

Los cubos OLAP es importante tenerlos montados en una base de datos que no sea la operacional, mucho mejor tener una base de datos dedicada únicamente al análisis de datos. Además, esta base de datos es mejor que sea una base de datos especializada, por ejemplo, bases de datos NoSQL como Cassandra mucho mas rápidas para este tipo de proyectos.

Un cubo lo podemos entender como una tabla donde hay campos de dos tipos dimensiones y medidas. Por ejemplo, si queremos crear un cubo para analizar la facturación podemos tener dimensiones de tiempo como año, trimestres, mes, semana, hora o dimensiones de los productos como familia, tipo de IVA, tipo de producto, etc. También tendremos medidas como importe neto, importe bruto, IVA, número de artículos, etc.

De esta manera podemos tener una tabla como ‘cubo_facturación’ (id, semana,mes,trimestre,año,hora,familia,importe_bruto,iva,num_articulos). Con esta estructura nuestro servidor podrá hacer consultas muy rápidas.

Cubos OLAP con Pivot4J

Pivot4J(http://www.pivot4j.org/) es una librería que nos permite pintar cubos, dispone también de una aplicación analítica(Nosotros vamos a usarla para este post) y plugin para Pentaho(http://www.pentaho.com/).

Primero debemos definir nuestro cubo mediante un fichero XML usando el lenguaje MDX(MultiDimensional eXpressions) que tendrá la siguiente pinta(Existen herramientas para generarlo visualmente, aunque a mi me ha generado un XML que Pivot4J no me leía):

<Schema name="Facturas" description="Facturas" measuresCaption="Facturas">
  <Cube name="Facturas" caption="Facturas" visible="true" description="Cubo de Facturas" cache="true" enabled="true">
    <Table name="Facturas" alias="Facturas" />

    <Dimension name="Producto">
	<Hierarchy hasAll="true">
		<Level name="Familia" column="familia" uniqueMembers="true"/>
		<Level name="Tipo" column="tipo" uniqueMembers="true"/>
        </Hierarchy>    
    </Dimension>

    <Dimension name="Tiempo">
	<Hierarchy hasAll="true">
		<Level name="Semana" column="semana" uniqueMembers="true"/>
		<Level name="Mes" column="mes" uniqueMembers="true"/>
		<Level name="Trimestre" column="trimestre" uniqueMembers="true"/>
		<Level name="Año" column="year" uniqueMembers="true"/>
		<Level name="Hora" column="hora" uniqueMembers="true"/>
        </Hierarchy>    
    </Dimension>

    <Measure name="Importe" column="bruto" datatype="Numeric" aggregator="sum" visible="true" />
    <Measure name="Importe medio" column="bruto" datatype="Numeric" aggregator="avg" visible="true" />
    <Measure name="IVA" column="iva" datatype="Numeric" aggregator="sum" visible="true" />
    <Measure name="Número de productos" column="productos" datatype="Numeric" aggregator="sum" visible="true" />
    <Measure name="Número de productos medio" column="productos" datatype="Numeric" aggregator="avg" visible="true" />
  </Cube>

</Schema>

Con todo, podemos descargarnos Pivot4J Analytics de la siguiente URL http://www.pivot4j.org/download.html y desplegarlo en un servidor Tomcat(O el servidor de aplicaciones web Java que mas nos guste). Por defecto trae datos de prueba, pero para configurar nuestra propia base de datos solamente tenemos que editar el fichero pivot4j-config.xml y configurar nuestro fichero de definición del cubo y la base de datos.

Aquí os dejo la pinta que tiene Pivot4J que nos permite analizar cubos de una forma muy visual y tiene muy buena pinta:

Pivot4J Screen

Pivot4J Screen

Comments

One Response to “Business Intelligence: Analizando cubos OLAP con Pivot4J Analytics”
  1. Ersan says:

    Hola, Alberto!

    Cual herramienta para generar el xml visualmente usted mi indicaria ?

    Gracias por compartir su conocimiento.
    Ersan

Leave a Reply

© Albert Coronado Calzada