Mostrando entradas con la etiqueta Pentaho Workbench. Mostrar todas las entradas
Mostrando entradas con la etiqueta Pentaho Workbench. Mostrar todas las entradas

sábado, 28 de diciembre de 2013

Configuración de roles en Schema Workbench


Los Roles se utilizan como en el resto de la herramienta pentaho para administrar el acceso a los datos de los schemas creados con el “Schema Workbench” o el resto de sus aplicaciones, se pueden configurar diferentes roles para los diferentes niveles del schema. Además hay que tener en cuenta que tenemos que tener a su vez definidos los roles en la plataforma.


Los diferentes niveles son para la configuración de roles son:
  • Schema
  • Cubo
  • Dimensión
  • Jerarquía
  • Miembros 

Configuración de acceso para los roles:
  • Un <SchemaGrant> define el acceso predeterminado para los objetos de un esquema. El atributo de acceso puede ser "all" o "none", pudiendo reemplazarse en acceso objetos específicos del cubo.



  • Un <CubeGrant> define el acceso a un cubo en particular. Cuando el <SchemaGrant> tiene asignado en el acceso “all” se puede limitar el acceso en un nivel inmediatamente inferior con <CubeGrant>. Los atributos utilizables son "all" o "none".




  • Un <DimensionGrant> define el acceso a un cubo en particular. Cuando el <CubeGrant> tiene asignado en el acceso “all” se puede limitar el acceso en un nivel inmediatamente inferior con <DimensionGrant>. Los atributos utilizables son "all" o "none".



  • Un <HierarchyGrant> define el acceso a una jerarquía. El atributo de acceso puede ser "all" (todos los miembros son visibles), "none" (la jerarquía existente en el cubo está oculta para el usuario) y "custom".
          – topLevel para definir el nivel superior
          – bottomLevel para definir el nivel inferior

  • <MemberGrant> concede o quita el acceso a un miembro determinado, y todos su hijos. Sólo se puede definir un elemento <MemberGrant> si su <HierarchyGrant> tiene el acceso configurado a "custom".
1. Los miembros heredan el acceso de sus padres. Ej: si niega el acceso a California, no será capaz de ver San Francisco.
2. Concesiones dependen del orden. Ej, si se concede el acceso a USA, a continuación, negar el acceso a Oregon, entonces no será capaz de ver de Oregon. Pero si se niegan a el acceso a Oregon, a continuación, conceder el acceso a USA, se puede ver todo.
3. Un miembro es visible si alguno de sus hijos son visibles. Ej: si negamos el acceso a USA, a continuación, conceder el acceso a California. Seremos capazes de acceder USA, y California, pero ninguno de los otros estados.
4. Miembro concede no anulan la jerarquía superior que le otorgan y de la parte inferior de los niveles. Si se establece topLevel = "[tienda]. [Estado de la tienda]", y conceder



Ejemplo de uso de los roles con Pentaho Schema Workbench:



  • Proceso Común:

Abra la herramienta Pentaho Mondrian Schema Workbench para diseñar un cubo. En lugar de diseñar un nuevo cubo desde el principio, vamos a utilizar el cubo (SampleData.mondrian.xml) que está disponible como parte de la descarga de Pentaho.(Para saber cómo diseñar un cubo utilizando Pentaho esquema Workbench, consulte la entrada anterior)


Para este ejercicio, utilice el cubo de muestra 'SampleData.mondrian.xml' que se encuentra en la ruta: '~ / bi-developers/analysis /'





La marca [x] menciona los elementos del esquema no están definidos correctamente. Para resolver este problema, expanda el nodo 'Quadrant Analysis' haciendo doble clic sobre él. Seleccione la tabla 'QUADRANT_ACTUALS ", en el panel derecho, establezca la propiedad de squema para la tabla como 'public'. Del mismo modo, ampliar cada uno de los nodos de cota, seleccione el elemento de la tabla y establezca la propiedad de esquema para las tablas como'Public'. Una vez solventados estos errores, voy a explicar como crear un schema en el que configuraremos roles.



En el schema 'SampleData' se ha definido un cubo con sus dimensiones y medidas. En estos vamos a añadir los controles de acceso (roles) para el cubo 'Quadrant Analysis.' Para ello, después de abrir el archivo xml esquema Mondrian para el cubo de la herramienta de esquema Workbench, haga clic con el botón derecho del ratón en el elemento 'squema' y seleccione 'add role'




Esto agregará un nuevo rol en el cubo con el nombre "New Role 0 '.



  • Agregar rol concreto
Una vez que se añade el Rol, cambie su valor del campo nombre por 'Admin' en el panel del lado derecho.

Haga clic con el botón derecho sobre  'Admin' y seleccione 'Agregar esquema de Grant. Esto agregará un nuevo elemento llamado 'squema de Grant' en el rol "Admin". Deje que la propiedad de acceso en 'squema de Grant' con (all), dejando dar permisio de acceso a ese rol.

Haga clic derecho sobre el elemento 'squema Grant' y seleccione 'Agregar Cube Grant'. Esto agregará un nuevo elemento 'Cube Grant' al  'squema de Grant'. Seleccione el elemento 'Cube Grant' y configure las propiedades con los valores deseados como:
   Access -> all
   Cube -> Seleccionar el cubo  'Análisis Quadrant '. (squema puede tener más de un schema para cubo, pudiendo ver todos los schemas asignados a cada schema, teniendo que asignar un schema concreto de los configurados).

Hemos definido el rol llamado 'Admin' y usuarios con este rol pueden tener acceso total sobre el cubo 'Quadrant Analysis'.


  • Agregar rol de Autenticación:

Una vez más, para agregar otro papel como "autenticado", haga clic derecho en el elemento 'squema' en la parte superior del archivo de esquema, y ​​seleccione 'Add rol '. Esto agregará un nuevo papel para el esquema con el nombre de 'New Rol 1'. Seleccione la función que acaba de agregar 'New Rol 1' y cambie su el contenido de la propiedad Name a "autenticado".

Haga clic derecho sobre el rol "autenticado" y seleccione 'Agregar squema de Grant'. Esto agregará un nuevo elemento en la función "autenticado". Deje que la propiedad de acceso al 'squema Grant', ya que es (es decir, "todos").

Haga clic derecho sobre el elemento 'squema Grant" y seleccione 'Agregar Cube Grant'. Esto agregará un nuevo elemento 'Cube Grant' en el elemento' squema Grant'. Por ultimo seleccione 'Cube Grant' y en la propiedad 'access' asigne el valor 'all', dando permiso a todos los usuarios autenticados por medio de este rol.

Haga clic derecho sobre el elemento 'Cube Grant' y seleccione 'Hierarchy Grant'. Esto agregará un nuevo elemento 'Hierarchy Grant' en el elemento' Cube Grant'. Seleccione la opción 'Hierarchy Grant' y establezca las siguientes propiedades en el panel de la derecha.

Access -> none
Hierarchy -> Región (Esta "Hierarchy" propiedad listará todas las jerarquías del cubo tiene.)

Hemos añadido otra función llamada "autenticado" al cubo y usuarios con este rol a tener un acceso limitado al cubo es decir, el usuario no puede capaz de ver la columna de la 'Región' en el cubo.

Por Ultimo faltará publicar el el schema

Publique el archivo de esquema en el servidor Pentaho, usando 'Archivo -> Publicar'.



  • Comprobación del proceso realizado


Abra la consola de usuario de Pentaho en el navegador pulsando la URL http://localhost:8080/pentaho

Acceda a la aplicación como "joe (admin)« usuario y contraseña como 'password'.

Haga clic en el botón 'Nueva vista de análisis ", se abrirá un diálogo que muestra el esquema de acceso para el usuario. Seleccione el esquema  "SampleData ' y el Cube " Análisis Quadrant'.

Abriendo un cubo como se muestra a continuación.



Una vez tenemos el cubo si intentamos navegar por el mismo nos damos cuenta que las regiones no se pueden expandir ya que el usuario joe es un usuario registrado, por lo que al bloquear las regiones para los usuarios logeados hace que no podamos navegar por las regiones.




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>