jueves, 19 de diciembre de 2013

Creación de un cubo OLAP

No es el cometido de esta entrada explicar en que consiste el modelo fisico normalizado de los datos, ni su necesaria des-normalización para poder crear las dimensiones pertinentes. Estos conceptos son conceptos basicos que es necesario que el lector adquiera antes de intentar cubos OLAP con los que poder realizar consultas multidimensionales.

Tampoco pretendo llegar a explicar en detalle todos los conceptos para crear un cubo. Sino que se pretente explicar como crear un cubo basico sin ningun tipo de complejidad, ya que a posteriori se desarrollaran en detalle los diferentes conceptos que no se explicaron en esta primera entrega.

Algunos elementos basicos

  • Dimensión Degenerada, hace referencia a un campo que será utilizado como criterio de análisis y que es almacenado en la tabla de hechos. Esto sucede cuando un campo que se utilizará como criterio de análisis posee el mismo nivel de granularidad que los datos de la tabla de hechos, y que por lo tanto no se pueden realizar agrupaciones o sumarizaciones a través de este campo. Los "números de orden", "números de ticket", "números de transacción", etc, son algunos ejemplos de dimensiones degeneradas. La inclusión de estos campos en las tablas de hechos, se lleva a cabo para reducir la duplicación y simplificar las consultas.

  • Las dimensiones compartidas, son aquellas que están relacionadas a dos o más dimensiones y que brindan información diferente a cada una de ellas.Se pueden incluir todos los campos de la dimensión Compartida en cada tabla de dimensión con que se relacione y eliminar luego la dimensión Compartida.Se puede crear una nueva tabla de dimensión basada en la dimensión compartida por cada tabla que se relacione con esta y luego eliminar la dimensión compartida.


Elementos basicos para la creación de un cubo

  • Cubos:contiene una combinación de dimensiones, métricas y miembros calculados que conforman la consulta a analizar.
  •  Cubos virtuales:Un cubo definido por la combinación de las dimensiones y las mediciones de uno o más cubos.
  •  Tabla de hechos: es una tabla principal en el modelado multidimensional en la que se almacenan las medidas.
  •  Dimensiones: son las tablas que contienen los elementos en los que se descomponen las vistas multidimensionales (a nivel de granulidad).
  •  Jerarquía: define la relación entre la tabla de hechos y las dimensiones.
  •  Elemento: son los elementos que se mostraran en cada dimensión.
  •  Métrica: son métricas de negocio en estado puro (sum, rest, count, div,mult).
  •  Miembros calculados:es una métrica que tiene como valor el resultado de la aplicación de una fórmula que puede utilizar todos los elementos disponibles en un cubo, así como otras funciones de MDX disponibles.

Proceso de creación de un cubo


En la plataforma pentaho se trabaja con  Mondrian Schema Workbench o Pentaho Schema Workbench en adelante PSW, es la herramienta generica que trae la suite para la generación de cubos para su posterior visualizacion.


    1. Conexion
    Una vez configuremos la conexión podremos cargar los datos de la bd normalizada para crear la estructura de los cubos.
      2. Nuevo schema

      • Creamos el esquema nuevo: seleccionar en el menú “File → New → Schema” (esperen que se toma su tiempo).
      • Cuando hayamos conectado con la base de datos veremos que se queda en blanco, como si nada hubiera ocurrido:
      • Pero si ocurrió, ya está todo listo para crear nuestro cubo.
      • Como se puede apreciar se ha creado un “Schema” al cual se le pone un nombre en el campo “name”








        Partamos de un esquema en estrella que tengamos en nuestro Data Warehouse, de dicha estrella es que modelaremos el cubo.  En el sistema de ejemplo se recogen solicitudes de diversas empresas para que se les repare o dé mantenimientos a sus respectivas flotas de autos y existen varios tipos de solicitudes en dependencia de la empresa que solicita el servicio.



        Queremos hacer un cubo que contenga la siguiente información:
        Cantidad de solicitudes entradas al sistema, agrupadas por el tipo de solicitud y la fecha en que entró la solicitud, dicha fecha debe poseer la siguiente jerarquía:
        1- Año
        1.1- Mes
        1.1.1 Fecha
        Empecemos entonces a ver como se usa esta herramienta para dar respuesta al cubo solicitado.

        3. Nuevo cubo
        Posteriormente con el schema marcado se le da al botón que apunta el cursor (Add Cube) y se crea un cubo
        Como se puede ver el nombre dado a este cubo es “Cant_Sol”, es importante que se observe los mensajes de color rojo que se muestra en el borde inferior de la ventana, en este caso “Fact Table does not exist in database” este mensaje hace referencia a que la tabla de hecho especificada no se encuentra en la base de datos, en realidad no hemos seleccionado ninguna, y hasta que no se haga se mantendrá el mensajeSiempre que aparezcan estos mensajes es que falta algún dato, por lo que el cubo está defectuoso.

          4. Definición de tabla de hechos


          Una tabla de hechos es una tabla principal en el modelado multidimensional y que almacena las medidas del rendimiento del negocio, es decir es la medida de los indicadores solicitados.

          Una tabla de hechos es la tabla principal en el modelado multidimensional y que almacena las medidas del rendimiento del negocio. El término "hecho" se usa para referise a una medida de negocio, por ejemplo la cantidad de elementos vendidos en un periodo de tiempo. Al ser esta medida el dato que se toma de la sumarización de las dimensiones que intervienen en el esquema multidimensional".

           Por ejemplo, procedemos a configurar la tabla de hechos en Workbench  dando clic en el cubo “Cant_Sol” se puede ve como se despliega un icono de tabla “Table”,  seleccionando la tabla que contendrá los hechos que contendra aquello que deseamos analizar.
          Se puede apreciar como una vez seleccionado el nodo “Table” a la izquierda, se muestran a la derecha un conjunto de campos, entre los cuales está “name” que es donde se seleccionará la tabla de Hechos que se utilizará pudiendo seleccionar solamente alguna de las tablas que se encuentre en el listado mostrado).


          Vean como al seleccionar la tabla deseada “h_cant_solicitudes” el nodo “Table” se acoge al nombre de dicha tabla.

          5. Añadir dimensiones

          Las dimensiones son los elementos en los que se puede descomponer un cubo, por lo que tendremos que descomponer cada una de las dimensiones en sus elementos desgranables, siendo ecada uno de estos un nivel de granulidad del cubo final.



          5.2. Tipos

          Procedemos a crear nuestra dimensión particular que mostrará el tipo de solicitud.

          CuboOlap
          Seguidamente nos paramos encima del cubo otra vez, le damos clic derecho y del conjunto de opciones que sale se selecciona la opción “Add Dimension”.

          CuboOlap

          Como pueden apreciar ha surgido un nuevo elemento “New Dimensión 0”, es aquí donde se hace referencia a las tablas de “Dimensiones” que se quieran utilizar. Este elemento también tiene en su interior otras estructuras.

          CuboOlap
          Aquí se muestra como el elemento “New Dimensión 0” tiene en su interior a “Hierarchy” (jerarquía), quien a su vez contiene un “Table”, siendo muy util y comprensible la utilizacion de la tecnica de ir configurando estas estructuras compuestas, desde adentro hacia afuera, por lo que el modo de configuración es el siguiente.


          CuboOlap
          “Table” contiene el campo “name” en donde se escoge la tabla dimensión requerida, nos interesa el tipo de solicitud y el tiempo, así que seleccionamos la primera mencionada. De la misma forma que arriba “Table” se acoge al nombre de la tabla seleccionada.

          CuboOlap

          Luego nos paramos en “Hierarchy” y en los campos “name” y “allMemberName” ponemos “Todos_los_tipos” este será el título de los valores que saldrán en los reportes, vistas de análisis, etc.
          En el campo “primaryKey” seleccionamos de los campos que tenga esta tabla dimensión aquel que sea la llave primaria, en este caso “Id_TipoSol”.

          CuboOlap

          Seguidamente nos paramos sobre “New Dimensión 0” y le ponemos un nombre a este elemento en “name”.
          Observen detenidamente ahora, se cuenta con un campo “foreingKey” eso se debe a que esta capa más arriba, está conectada a la tabla del cubo “h_cant_solicitudes” por lo que cuando vemos la lista que brinda “foreingKey” vemos todos los campos con los que cuenta la tabla hecho de este cubo, y como todos y todas sabemos las tablas hechos deben tener como llaves principales las llaves de las dimensiones que usa. De esta forma ya hemos establecido los campos por los que se indexan las tablas “h_cant_solicitudes” y “d_tipo_solicitud”.

          CuboOlap
          Bien, ya establecimos la conexión entre las tablas mencionadas, pero no hemos establecido que campo(s) son los que mostraremos. Para ellos nos paramos en “Hierarchy” y damos clic derecho y seleccionamos “Add Level”.

          CuboOlap

          A este “Level” le ponemos nombre en “name” y en “nameColumn” seleccionamos el campo que deseamos se muestre.
          Ahora mismo tendriamos configurada la siguiente seccion:


          De esta forma ya hemos establecido los campos por los que se relacionan las tablas “h_cant_solicitudes” y “d_tipo_solicitud”.


          5.1. Fechas


          Ya con esto hemos terminado de configurar la dimensión de tiempo de la solicitud, según lo requerido nos queda crear otra para el tipo, para lo cual nos volvemos a posicionar arriba del cubo,
          Para añadir las fechas tenemos que añadir cada nivel de granulidad del cubo añadiendo primero los elementos del nivel superior  y por ultimo los de nivel inferior. Esta dimension se diferencia de la dimension tipo por la diferenciación en los niveles de granulidad, ya que la dimensión tipo solo mostrará un nivel de graniludad
          Para continuar este proceso, le damos clic derecho y creamos una nueva dimensión (“Add Dimension”), posteriormente bajamos hasta el nivel más bajo “Table” y seleccionamos la tabla correspondiente.

          CuboOlap
          Se selecciona la tabla “d_tiempo”.

          CuboOlap
          Configuramos la jerarquía “Hierarchy”, que no es mas que la relaccion de la primary key de la dimensión (como se ve en la imagen superior), con la el id que la relacciona con la tabla de hechos, en la imagen superior se puede ver como se configura esta relacción(Como se ve en la imagen inferior).

          CuboOlap
          Como se comento anteriormente en la dimension fecha se mostrará más de un nivel, puesto que se desea organizar por año, por cada año los meses, y por las fechas. A continuación veremos  como se debe hacer para lograr esto, asignando los niveles de granulidad.
          CuboOlap
          Se crea un primer nivel que va a coger el campo “Anno”. ESte nivel referencia al año, siendo este el nivel de granulidad superior.

          CuboOlap
          Luego se crea otro nivel que guardará el campo referente a los meses: “Mes”, Siendo el nivel de granulidad inferior.
          CuboOlap
          Y por último el nivel “Fecha” que acogerá el campo “Fecha”, siendo este el ultimo nivel de granulidad.


          6. Añadir metricas

          Bien, ya tenemos modelado nuestro cubo con las especificaciones requeridas, ahora solo nos queda hacer el cálculo de las solicitudes realizadas.
          Esto se hace con el campo “Cant_sol” que tiene la tabla hecho “h_cant_solicitudes” de la siguiente forma.

          CuboOlap
          Nos posicionamos arriba del cubo, damos clic derecho y seleccionamos “Add Measure”.

          CuboOlap
          En “name” ponemos el nombre de este valor a calcular, en “aggregator” seleccionamos la operación de sumarización  que se desee realizar, en nuestro caso “Sum” (sumar).

          CuboOlap
          Luego, en “column” seleccionamos el campo “CantSol”, que será el hecho al que le vamos a realizar el cálculo seleccionado anteriormente.

          CuboOlap
          Aquí especificamos el formato que le vamos a dar al resultado calculado, entero, decimal, con símbolos como “$, %” en dependencia de lo que se calcule.
          8. Conclusion

          Con todos los pasos anteriores ya tendremos configuradas las dimensiones que nos interesan en nuestro cubo y la tabla de hechos para el estudio del elemento a analizar.


          7. Guardado y publicado de cubos
          Solo nos queda salvar este cubo, el cual tendrá una extensión de formato “.xml”, es el formato de lenguaje de etiquetas que usa Mondrian.


          CuboOlap
          Y por último publicar el cubo en nuestro servidor Pentaho. Atención, para poder hacer una publicación en nuestro servidor hay que haber modificado un archivo que nos da permisos para ello. Para poder modificar este fichero sigue estos pasos:
          • Entra en biserver-ce > pentaho-solutions > system
          • Botón derecho en el archivo publisher_config.xml
          • Edita estas lineas de a continuación poniendo lo que está en negrito un password, que es el mismo de PUBLISH PASSWORD de la imagen anterior.
          <publisher-config>
          <publisher-password> password_seleccionada </publisher-password>
          </publisher-config>

          No hay comentarios:

          Publicar un comentario