Dynamic Schema Processor con Pentaho y Saiku

Category : Noticias

Los cubos OLAP de Mondrian permiten incorporar la definición del control de acceso al dato en función de una serie de parámetros cómo puede ser el usuario de la sesión, sus roles o cualquier otro parámetro que consideremos oportuno.Saiku

Para definir los permisos de acceso a los datos existen los Roles de mondrian que se pueden definir según las especificaciones y que son un trozo de código xml que se incluye en el archivo de schema ( schema.mondrian.xml ) y que acostumbra a tener este aspecto:

<Role name=”Mi Rol”>
<SchemaGrant access=”none”>
<CubeGrant cube=”Mi Cubo” access=”all”>
<HierarchyGrant hierarchy=”[Area]” access=”custom” rollupPolicy=”partial”>
<MemberGrant member=”[Area Comercial].[EXP]” access=”all”/>
<MemberGrant member=”[Area Comercial].[HOR]” access=”none”/>
<MemberGrant member=”[Area Comercial].[ALI]” access=”none”/>
</HierarchyGrant>
</CubeGrant>
</SchemaGrant>
</Role>

Y es una solución muy buena. Pero poco flexible porque, ¿ Que pasa cuando se define un nuevo rol ? Pues que tenemos que coger el archivo schema.mondidrian.xml que hay en nuestro servidor, editarlo, añadir el nuevo rol y su visibilitad y volverlo a subir al servidor…. Fácil… Si esto ocurre una vez cada dos o tres años, pero si los roles cambian diariamente, semanalmente, mensualmente…. es una tarea de mantenimiento inasequible.

Para solucionar este problema está el Dynamic Schema Processor cuya idea base es: Definamos una clase java que processará el schema en el momento de ejecución, cuando el usuario se conecte a los cubos OLAP y que lo modificará dinamicamente según nuestros intereses. Reduciéndolo a un ejemplo muy simple. Se trata de definir una clase Java que coja el archivo xml del schema y que inyecte, donde nosotros le digamos, la definición de los roles o lo que a nosotros no dé la gana. Eso lo hará dinámicamente para cada sesión por lo que tendremos un schema dinámicos según el usuario y su sesión.

Me interesa! ¿Qué debemos hacer para tener esto?

Primero de todo… definamos el entorno de trabajo: Por un lado Pentaho BA Server en su versión CE + Saiku . Por otro lado, tu IDE favorito, en mi caso Eclipse.

1. Nos aseguraremos que Pentaho pasa los roles a mondrian.

En según que versiones no lo hace ( anteriores a la 5 creo ) por lo que es bueno asegurarse. Además, la forma en cómo se mapea la información puede variar.

Así que editaremos el archivo ${biserver-ce}/pentaho-solutions/system/pentahoObjects.spring.xml y nos fijaremos en el bean Mondrian-UserRoleMapper. Es el bean que mapea los objetos de sesión con los roles que se le pasan a mondrian. Para pasarle los roles de la sesión de usuario a mondrian deberíamos tener habilitado el tag:

<bean id=”Mondrian-UserRoleMapper”
name=”Mondrian-One-To-One-UserRoleMapper”
class=”org.pentaho.platform.plugin.action.mondrian.mapper.MondrianOneToOneUserRoleListMapper”
scope=”singleton” />

Si yo soy el usuario pepito y tengo los roles HOR y EXP ahora mondrian reccibirá esos roles y me dejará ver lo que me toca.

Pero por ejemplo, puedo querer roles más personalizados y ligados al usuario… para eso deberemos comentar el tag anterior y habilitar:

<bean id=”Mondrian-UserRoleMapper”
name=”Mondrian-SampleUserSession-UserRoleMapper”
class=”org.pentaho.platform.plugin.action.mondrian.mapper.MondrianUserSessionUserRoleListMapper”
scope=”singleton”>
<property name=”sessionProperty” value=”MondrianUserRoles” />
</bean>

 

2. Definamos nuestro schema mondrian.

Asumo que ya sabes definir un schema de mondrian por lo que aqui sólo me voy a referir a la parte que nos toca… definir los sitios donde inyectaremos los roles. Para eso tenemos varias opciones. La primera opción es definir el schema con normalidad y definir los roles dinámicamente. Para tal caso, lo que haremos será añadir un tag que nos permitirá inyectar los roles después… Algo parecido a esto:

bla bla bla
<Measure name=”mi_medida” column=”mi_columna” aggregator=”sum” visible=”false” />
<CalculatedMember name=”YTD” formula=”sum(YTD([Tiempo].[Dia].CurrentMember), [Measures].[mi_medidad])” dimension=”Measures” />
</Cube>

%MIS_ROLES_VAN_AQUI%

</Schema>

 

Con lo que ya tengo la etiqueta %MIS_ROLES_VAN_AQUI% que usará mi clase java para inyectar los roles que haya generado dinamicamente.

3. Definimos nuestra clase Java.

Tenemos varias opciones, pero la mayoría se basan en extender la clase FilterDynamicSchemaProcessor o LocalizingDynamicSchemaProcessor al final todo es lo mismo, implementar una clase que se ejecutará en el momento de cargar el schema y que lo modificará según nuestros intereses. Os pongo un ejemplo muy simple de FilterDynamicSchemaProcessor

 

package com.jortilles.mondrian.dsp;
  import java.io.InputStream, mondrian.olap.Util;
  import mondrian.spi.DynamicSchemaProcessor;
  import mondrian.spi.impl.FilterDynamicSchemaProcessor;

public class VSDSP extends FilterDynamicSchemaProcessor {
@Override
  protected String filter(final String schemaUrl, final Util.PropertyList connectInfo, final InputStream stream) throws java.lang.Exception {
  String originalSchema = super.filter(schemaUrl, connectInfo, stream);
  String mis_roles = "<Role name=\"Mi Rol\"> <SchemaGrant access=\"none\"><CubeGrant cube=\"Mi Cubo\" access=\"all\"><HierarchyGrant hierarchy=\"[Area]\" access=\"custom\" rollupPolicy=\"partial\"><MemberGrant member=\"[Area Comercial].[EXP]\" access=\"all\"/> <MemberGrant member=\"[Area           Comercial].[HOR]\" access=\"none\"/></HierarchyGrant></CubeGrant></SchemaGrant></Role>" ;
  String modifiedSchema = originalSchema.replace("%MIS_ROLES_VAN_AQUI%",mis_roles);
  return modifiedSchema;
  }
  }

 

A partir de aqui las posibilidades son infinitas….

4. Usemos nuestra clase Saiku

Una vez compilada y empaquetada (si queremos) debemos ponerla en un sitio accesible. Tipicamente ${biserver-ce}/tomcat/webapps/pentaho/WEB-INF/lib o ${biserver-ce}/tomcat/webapps/pentaho/WEB-INF/classes si no la hemos empaquetado.

NOTA MUY MUY MUY IMPORTANTE: para las versiones 5 y 6 de pentaho, si queremos usar nuestro dynamic schema proccesor con Saiku, debemos ponerlo tambien en el directorio lib de saku…. ${biserver-ce}/pentaho-solutions/system/saiku/lib/ Si no os dará un problema de que no puede hacer el cast de la clase a dynamic schema processor.

Una vez que tenemos nuestra clase en su sitio, debemos modificar la conexión de mondrian para que la use, para eso añadiremos los parámetros

DynamicSchemaProcessor para indicar nuestra clase, UseContentChecksum=true para que revise siempre si debe volver a generar el schema y JdbcConnectionUuid=MI_DS para identificar la conexion. Más información en la documentación

dsp saiku

Con esto ya tenemos nuestro Dynamic Schema Processor definido y listo para funcionar con Pentaho y Saiku

P.D.: No estoy descubriendo la rueda, hay mucha información ahí fuera relativa a este punto, pero quería tener una guía fiable y conocida.


Trabajar con nosotros

Category : Noticias

Quieres incorporarte a un equipo joven y dinámico? En Jortilles estamos buscando nuevos talentos para trabajar con nuestro equipo.

¿Qué hacemos?trabajar

Jortilles es una consultoría especializada en soluciones analíticas open source. Trabajamos con Pentaho, Saiku, Birt, Kafka, Spark, Postgre, Vertica, Storm , MongoDB, html5 , Bootstrap entre otras. Implementamos proyectos de BI y datascience.
pentaho_logo

¿Qué buscamos?

Buscamos jóvenes talentos con ganas de aprender e incorporarse a un proyecto excitante.  Con conocimientos en algunos de los siguientes ámbitos:

  • Conocimientos previos en Pentaho o algunas de las tecnologías que utilizamos.
  • Conocimientos de SQL  y bases de datos.
  • Entornos Linux.
  • Enotrnos WEB con  Java y  Javascript.

 

¿Qué ofrecemos?

  • Trabajar en un entorno relajado y agradable en nuestras oficinas en El Masnou.
  • La posibilidad de aprender mucho y progresar profesionalmente en una empresa joven y dinámica.
  • Horario flexible.
  • Salario según valía.
  • Contrato laboral estable.

 

¿Te interesa?

Mándanos un email a info@jortilles.com con tu curriculum y datos de contacto.  ¡Esperamos noticias tuyas! trabaja

 


Haciendo un gráfico con dos ejes

Category : BI , Pentaho

Si queremos crear un gráfico con dos ejes, para representar dos magnitudes muy distintas, siempre podemos hacerlo habilitando el plot2 en nuestro gráfico.

Habilitando las propiedades:

plot2: true,
plot2Series: ['Temp'],
plot2OrthoAxis: 2,

Donde plot2Series es la serie que queremos llevar al otro eje

plot2

Y tenemos nuestro gráfico:

dual_axis

Y si queremos quitar la base 0 en el eje de las Y ( Si por algún motivo estamos tan locos…)

orthoAxisOriginIsZero = False


Crea un Cuadro de Mando con Pentaho CDE

Category : BI

Pentaho CDE Dashboard

Un Dashboard, en nuestro caso CDE,  es una representación gráfica de los principales indicadores, orientados a informar sobre el estado de estos para una mejor toma de decisiones, facilitando así la consecución de los objetivos de negocio previamente definidos. Esta herramienta nos ha de permitir una visualización rápida del estado de los indicadores clave.

En Jortilles hemos hecho un pequeño tutorial con los “primeros pasos” para los principiantes. En este tutorial, vamos a realizar un cuadro de mando con Pentaho y Community Edition Dashboard. Para ello utilizaremos Pentaho BI Server 6 y también el framework de Bootstrap

Podéis descargar el documento aquí Dashboard Pentaho

Cómo ejemplo de Dashboard tenéis el siguiente:

CDE

Pentaho


Chuleta de Gráficos CCC

Category : Noticias

Los graficos CCC

A veces es útil tener a mano la paleta de gráficos disponibles “por defecto” en Pentaho CDE.

Aquí tenemos un resumen visual:

Pie Chart
pie1
CCC Pie Chart
Bar Chart
barchart
CCC Bar Chart
Dot Chart
pie1
CCC Dot Chart
Times Lines Chart
pie1CCC Times Line Chart
Stacked Line Chart
pie1
CCC Stacked Line Chart
Stacked Area Chart
pie1
CCC Stacked Area Chart
Heatgrid Chart
pie1
CCC Heatgrid Chart
Bullet Chart
pie1
CCC Bullet Chart
Waterfall Chart
pie1
CCC Waterfall Chart
Metric Dot
pie1
CCC Metric Dot Chart
Box Plot Chart
pie1
CCC Box Plot Chart
Treemap
pie1
CCC Treemap Chart

Grupo de usuarios de Pentaho en Barcelona

Category : Noticias

Des de Jortilles estamos impulsando la creación de un grupo de usuarios de Pentaho en Barcelona. (PLUG Barcelona)
El objetivo es crear un grupo de desarrolladores y usuarios de Pentaho y su comunidad en el que podamos compartir conocimientos, inquietudes y novedades.

Hemos creado un grupo de meetup para organizarnos y os invitamos a que os apuntéis y participéis.

La primera quedada será el próximo miércoles 24 de febrero a las 19h en Itnig.
Hablaremos sobre las últimas novedades de Pentaho y Saiku. Haremos un resumen de lo que se habló en el pasado Pentaho Community Meeting en Londres y tendremos una demo / taller de kettle.

La agenda es:

  • Juanjo – Jortilles : Presentación de grupo y novedades de pentaho presentadas en el último PCM de Londres.
  • Jordi Pallaes : Sincronización de Bases de datos usando PDI!
  • Todos: Mesa redonda. Propuestas sugerencias y tonterías varias patrocinadas por nuestra marca de cerveza favorita: Estrella Damm

Me han dicho que si pongo el logo, ellos ponen las cervezas…. ¡¡¡¡¡Cervezas gratis!!!!!
Estrella Damm

 

 

 

 

La agenda está abierta a colaboración, por lo que toda aportación será bienvenida!

Os esperamos!


Introducción a Apache Spark

Category : BigData , Noticias

Hoy vamos a hacer una introducción a Apache Spark, el nuevo motor del Big Data, se trata de un framework de computación paralela enfocando especialmente hacia la ciencia de datos.

Hay que destacar que Spark lleva incluidas librerías específicas para tratar datos estructurados (SparkSQL), integración con lenguje R (Spark R), capacidades para el streaming de datos (Spark Streaming), machine learning (MLib) y computación sobre grafos (GraphX).

Esta primera introducción es una guía para su instalación, conceptos, estructura y el primer contacto que tendremos será la implementación de un Clúster Standalone con PySpark, las aplicaciones se ejecutan como un grupo independiente de procesos en el Cluster, dirigido por el programa principal.

ApacheSpark

Podéis descargar el documento aquí Introducción_Spark

 


Nueva Convocatoria de Curso BI Open con Pentaho en Barcelona

Category : Formación , Pentaho , Servicios

Jortilles abre una nueva convocatoria de sus cursos Business Intelligence con herramientas Open Source. Pentaho es la herramienta líder en el mundo del Business Intelligence Open Source. Aprende a analizar tus datos con herramientas libres y gratuitas.

Si estás pensando en iniciarte en el mundo del BI con herramientas libres y gratuitas cómo Pentaho no te puedes perder este curso. Un curso intensivo en el que implementaremos una solución BI de principio a fin. Extracción y manipulación de datos. Modelado de datos para su análisis. Cuadros de mando e informes para visualizar los principales KPIs.

En la página del curso encontrarás toda la información.

La formación será en Barcelona, los próximos 19, 20 y 21 de enero de 2016. ¡Aprovecha los importantes descuentos de compra anticipada!

Formación Abierta en Barcelona


Jortilles presenta WAQE en Pentaho Community Meeting 15

Category : BI , Noticias , Pentaho

Un año más hemos asistido al Pentaho Community  Meeting, Este año es ya el  #pcm15    Pero este año ha sido especial porque hemos presentado nuestro WAQE. Nuestro plugin para Pentaho que permite realizar listados ad-hoc por usuarios finales de forma fácil e interactiva. Podéis bajaros la presentación de aquí .  Más información en la página del proyecto.   Y si lo queréis, podéis ver un vídeo demostrativo en Youtube.

El plugin ha tenido una gran aceptación y ha despertado interés, lo cual nos hace mucha ilusión!!!

 

waqe-retweet

 

Si queréis probarlo, id al marketplace de vuestro servidor Pentaho 5.4 y descargarlo!!!!!

Pero ya basta de hablar de nosotros… El PCM15 ha sido muy interesante y hay muchas otras cosas de las que hablar.

“Read More”

Pentaho + Mongodb

Category : BI , Mongodb , Pentaho

MongoDB y Pentaho

Las bases de datos NoQSL como MongoDB se están convirtiendo en una tecnología fundamental en el mundo del BigData. Ofreciendo una velocidad y escalabilidad mayor que en las bases de datos estructuradas.

Pentaho ofrece soporte para una gran variedad de bases de datos NoSQL diseñadas para trabajar con un gran volumen de datos.

Pero cual deberíamos elegir para nuestros proyectos? Por este motivo queremos testear diferentes tecnologías, ver su integración con otras herramientas,  y analizar su rendimiento.

Este primer post empezamos con Mongo, desde su instalación, los primeros pasos, comandos.. hasta su integración con Pentaho para realizar un informe.

mongodb+pentaho

Podéis descargar el documento aquí Mongo+Pentaho