El Rincon del BI

Descubriendo el Business Intelligence…

17.3. Preparando el analisis dimensional. Definición de cubos utilizando Schema Workbench.

Posted by Roberto Espinosa en 4 julio 2010


En lo referente al análisis dimensional, Pentaho nos proporciona en su plataforma BI una solucion ROLAP a través de lo que llaman Pentaho Analysis Services. PAS esta basado en Mondrian, que es el corazon de este, y en Jpivot, que es la herramienta de análisis de usuario, con el que realizamos la navegación dimensional sobre los cubos desde la plataforma BI y visualizamos los resultados de las consultas. Estas son ejecutadas por Mondrian, que traduce los resultados relacionales a resultados dimensionales, que a su vez son mostrados al usuario en formato Html por Jpivot.

Arquitectura Pentaho Analysis Services

Tal y como vemos en la imagen, donde se representa la arquitectura de Pentaho Analysis Services, el elemento principal del sistema son los ficheros xml donde se representan los esquemas dimensionales. Para construir estos ficheros xml, podriamos utilizar cualquier editor de texto o xml, o bien la herramienta que nos ofrece Pentaho, que se llama Schema Workbench. Pentaho Schema Workbench es la herramienta gráfica que permite la construcción de los esquemas de Mondrian, y además permite publicarlos al servidor BI para que puedan ser utilizados en los analisis por los usuarios de la plataforma.

En los ficheros de esquema XML, se describen la relaciones entre las dimensiones y medidas del cubo (modelo multidimensional)  con las tablas y campos de la base de datos, a nivel relacional.Este mapeo se utiliza para ayudar la traducción de las querys MDX (que es el lenguaje con el que trabaja Mondrian), y para transformar los resultados recibidos de las consultas SQL a un formato dimensional. Vamos a ver a continuación como utilizar PSW para definir los esquemas de nuestro proyecto y publicar los resultados en el servidor BI. Más adelante veremos como funciona jpivot a nivel de frontend, para sacarle todo el partido a los análisis.

Pentaho Schema Workbench.

Como en todas las herramientas de Pentaho, en primer lugar hemos de definir las conexiones a base de datos como paso previo a la configuración de los esquemas. Además, hemos de colocar el driver jdbc en el directorio drivers que cuelga de la instalación de PSW. En nuestro caso, hemos configurado la conexión con Oracle de la siguiente manera:

Definición de la conexion a BD en PSW

Vamos a ver a continuación las tareas básicas para definir un esquema utilizando PSW. Os recomiendo la lectura de la documentación Online de Pentaho referente a este tema antes de continuar, pues en ella se explican los conceptos básicos que tendremos que conocer para realizar el diseño de forma correcta.

En primer lugar, procederemos a crear el Esquema. Un esquema es un contenedor de cubos (tendra un único fichero xml), donde podremos crear tantos cubos como deseemos. La propiedades que se pueden indicar al crear un esquema son un nombre, la descripción, un nombre para la dimensión que agrupara a las medidas y un rol por defecto para utilizar en las conexiones de base de datos. Como ayuda en este momento y en la creación del resto de elementos, podemos poner el ratón en el nombre del atributo a definir, y nos aparecera un texto explicativo de este (tal y como veis en la imagen siguiente).

Creacion esquema

Una vez creado el esquema, procederemos a la creación de los Cubos, aunque previamente hemos de hacer una consideración.  En cada cubo, podemos definir la estructura de tabla de hechos, medidas, miembros calculados y dimensiones. La dimensiones y sus jerarquias podemos definirlas dentro de cada cubo, o crearlas de una forma general dentro del esquema, y luego utilizarlas en los cubos que nos interesen. Esto nos evita tener que definir varias veces lo mismo para cada uno de los cubos, así como reutilizar elementos ya definidos que se tratan en varios cubos. Esta será mi elección de diseño. Por tanto, antes de crear los cubos vamos a crear las dimensiones compartidas con sus correspondientes jerarquías.

Creación de dimensiones compartidas.

Para añadir las dimensiones, seleccionaremos el esquema y pulsaremos la opción Add Dimension. Le daremos un nombre significativo a la dimensión, y seleccionaremos su tipo (TimeDimension en este caso) y una descripción.

Creacion dimension compartida

A continuación, iremos creando las diferentes jerarquias que tenga la dimensión. Por ejemplo, en nuestra dimensión tiempo tenemos la jerarquías: Año – Mes – Dia, Semana – Dia, Año – Trimestre – Mes – Dia, etc. Como veis, podemos tener tantas jerarquías como deseemos. Las jerarquías son los niveles de análisis y detalle de la información de nuestro modelo dimensional, que luego nos permitiran realizar el análisis y la navegación por los datos utilizando Mondrian. En cada jerarquía, indicaremos una serie de parámetros (importantes el hasAll, si queremos que haya un agrupador de todos los valores de la jerarquía, y su descripcion en el caso de que este marcado (allMemberName)). Igualmente importante la clave de la jerarquía y una descripción que luego nos aparecerá al configurar la ejecución del cubo.

Propiedades de la jerarquía de una dimension

Para cada jerarquía, indicaremos una tabla de la dimensión, y a continuación iremos creando los diferentes Niveles (levels) que componen la jerarquía.Para cada nivel, iremos indicando la columna de la base de datos que la describe, el tipo de datos, el tipo de nivel, la columna que contiene la descripción, etc. Esto lo realizaremos para cada uno de los niveles de la jerarquía. El orden con el que vamos creandolos determina la estructura de la jerarquía.

Creación de niveles dentro de la jerarquía

Podemos tener tantas jerarquías como sea necesario dentro de la dimensión. Luego podremos utilizar la que deseemos a la hora de realizar los análisis (la primera será la jerarquía por defecto). Una vez concluido el diseño de todas las dimensiones con sus correspondientes jerarquías, ya podemos proceder a la creación de los cubos.

Creación de Cubos.

Al crear el Cubo, le indicaremos un nombre y una descripción, pudiendo marcar ademas las opciones cache (para que Mondrian trabaje con cache en este cubo) y la opción enabled (para que el cubo sea visible. Sino esta marcada este flag, el cubo no aparecerá).

Creacion del Cubo

A continuación, seleccionaremos la Tabla de Hechos del cubo (a partir de la cual podremos calcular las medidas o indicadores). Antes de proceder a crear las medidas, seleccionaremos las dimensiones que queremos incluir en el cubo, con la opción Add Dimension Usage. Incluiremos todas las dimensiones necesarias(de las compartidas que hemos creado antes). El cubo hereda todas las características que hayamos incluido en la dimensión, incluyendo todas las jerarquías y sus correspondientes atributos.

Como ultimo paso en la creación del cubo, nos tocará definir las Medidas, que van a ser los valores de análisis. Tenemos aquellas que se calculan directamente con campos de la base de datos, y los Miembros Calculados, que son formulas en las que utilizamos otras medidas.  Los atributos que podemos indicar para las Medidas son su nombre, descripción, función de agregación (suma, media, valor máximo, valor mínimo, contador, etc), la columna que genera la medida, si es visible o no (puede interesar que campos intermedios que se utilizan para otras medidas no se vean), tipo de datos, formato y caption (nombre que aparecera cuando lo utilicemos).

Creacion Medida

En lo referente a los Miembros Calculados, los atributos están mas limitados. Podremos indicar su nombre, descripción, caption (nombre que aparecerá en los análisis), si es visible o no, y el atributo mas importante, la formula que genera el valor de la medida calculada. Para indicar los valores de otras medidas, utilizamos la notación [dimension_medidas].[medida]. Por ejemplo, para calcular el importe bruto de ventas, la formula, siguiendo esta notación sera la siguiente: [Measures].[Unidades]*[Measures].[Precio_Bruto]

Publicación del Esquema y utilización desde el portal BI.

Hemos visto los elementos básicos que podemos utilizar en la definición de un esquema de Mondrian y sus cubos. Disponemos de otros elementos, como los NS (Named Set) o los UDF (User Defined Functions), así como los elementos virtuales (Cubos, Dimensiones y Medidas), en los que no vamos a entrar en detalle. Tras construir el esquema, el paso final para poder utilizarlo en los análisis del portal BI de Pentaho es su publicación. Para ello, salvamos el cubo y seleccionamos la opción de menú File –> Publish. Se nos pide la dirección de publicación del servidor, la contraseña de publicación y los datos del usuario. Se realiza la conexión con el servidor y el esquema ya esta disponible para ser utilizado.

Publicacion de un esquema de Mondrian desde PSW

Accedemos al portal para ver si esto es asi. Al crear una nueva vista de análisis, nos aparecen los diferentes esquemas disponibles, y ya aparece el nuestro, ademas de los esquema de demostración que incluye el servidor. Tal y como veis en la imagen, disponemos de nuestro primer análisis. Aparecen todas las dimensiones (aunque solo se visualiza una jerarquía por dimensión) y solo se ve una medida de todas las que hayamos definido.

Aunque veremos más adelante todas las opciones que podremos utilizar con Mondrian y jpivot, rapidamente modificamos el análisis, modificando la configuración de las dimensiones y los indicadores de análisis, y nos queda algo así. Hemos dejado solo la dimensión tiempo, con la jerarquía Año-Mes-Dia partiendo del nivel de mes, y hemos modificado los indicadores (medidas) que se visualizan.

Ejemplo de análisis sencillo

Con la definición del metadatos que vimos en la entrada anterior del blog, y la creación y publicación de los esquema de Mondrian que hemos visto aquí, tenemos el portal de BI listo para profundizar en las herramientas de reporting y para sacar todo el partido de los análisis dimensionales. Estos son los aspectos que vamos a ver en profundidad en las próximas entradas del blog.

9 respuestas to “17.3. Preparando el analisis dimensional. Definición de cubos utilizando Schema Workbench.”

  1. […] 17.3. Preparando el analisis dimensional. Definición de cubos utilizando Schema Workbench. […]

  2. pentahohoho said

    Necesito ayuda con la publicacion de cubos para una version anterior de pentaho, en mi caso Pentaho 1.7
    Gracias por la informacion q puedan brindarme.

  3. juan said

    disculpa amigo me descarge la ultima version del Schema Workbench psw-ce-3.3.0.14703 pero no se que mas necesito para hacer una conexion a oracle me descarge el driver ojdbc14.jar no se porque la conexion es fallida alguien me podria ayudar en la conexion…. gracias

  4. Deddy said

    una pregunta … es necesario agregar medidas en el cubo? … o se puede hacer sin ellas …

  5. Hola que tal, gracias por tu post. Te comento que a mi solo me aparece una medida de las que definí asi como mencionbas. Como puedo hacer para que aparezcan las otras medidas. Gracias

    • miguel angel said

      Te vas a la primera opción de la barra de herramientas, ahí encuentras lo que son los filtros, por default, solo te aparece una medida como la mencionas, pero si entras en esa zona veras que esta desactivada, solo activa tus campos medida y listo.

  6. Juan V. said

    Hola Roberto, muy buen post.
    Tengo una duda, en Mondrian no se crea el cubo físico, ¿verdad?, me refiero no a la definición del cubo, sino al cálculo de todas sus celdas y niveles de agregación, que creo que sería MOLAP, ¿correcto?.
    Gracias,

Deja un comentario