lunes, 9 de noviembre de 2015

De Blogger a Jortilles

Tras un tiempo manteniendo el blog  pentahohispano.blogspot.com.es es hora de dar un paso adelante.

Pentahohispano es un blog alrededor de la Analítica Empresarial con herramientas de Código Abierto, principalmente Pentaho. Pero también es mi blog personal. Jortilles crece y el blog ya no lo voy a mantener sólo yo y la temática  también se va a abrir. Por lo que considero oportuno realizar este paso adelante y  "traer el blog a casa".



Lo he dicho de pasada, pero si! El equipo crece. Hemos incorporado una estrella emergente al equipo, Laura. Pronto empezaréis a saber de ella!!

Así que, los que tengáis el rss de este blog, actualizarlo a al de Jortilles/blog , por favor.

Gracias y seguimos en contacto... En el blog de  Jortilles

sábado, 24 de octubre de 2015

ByPass Pentaho Login - Acceso desde aplicaciones terceras a recursos de Pentaho

En muchas ocasiones tengo que acceder a un reccurso de pentaho desde terceras aplicaciones. Tales cómo  un cuadro de mandos, o un informe. En estos casos, siempre nos encontramos con la misma pregunta.... ¿Le vamos a obligar al usuario a volver a hacer login ? En caso de que no queramos hacerlo... ¿Como lo vamos a gestionar?

Tenemos varias formas, algunas mejores y otras peores...  Pedro Alves  ya ha hablado de esto en varias ocasiones. Su post más reciente y recomendable es este... (creo).

Básicamente:
  1. Pasar usuario y contraseña por la url ... (No muy recomendable)
  2. Habilitar acceso anónimo... (y pierdo la seguridad)
  3. Configurar las dos aplicaciones para hacer Single Sign On (CAS) 
  4. Login basado en cookies   ( documentación ).

Siempre, las opciones más recomendables son la 3  y la 4 aunque hay ocasiones en las que no es posible por cualquier motivo.. Por lo que es interesante tener una opción intermedia.

Por eso en Jortilles hemos creado a ... Urbano



Un filtro que te permite acceder a ciertas urls conocidas si le das la contraseña.   Para eso codificaremos las llamadas bajo cierto patrón conocido por Urbano y por la aplicación tercera:

 http://localhost:8080/pentaho/Urbano?token=MI_TOKEN&dst=MI_DESTINO


Donde:
  •  MI_TOKEN  es mi clave de acceso codificada  
  •  MI_DESTINO  es el destino conocido al que quiero acceder.

La documentación técnica está en el proyecto

Un administrador cuidadoso dirá que este método está bien. Pero que una vez hecho login  tienes acceso a todos los recursos de Pentaho. Ya has hecho login. Ya estás dentro. Ya puedes ir a http://localhost:8080/pentaho/Home

Aquí es donde entra en juego nuestro proxy http. Si queremos realmente exponer SOLO ciertas URLs podemos poner un proxy http por medio que nos intercepte el trafico y nos exponga tan sólo las urls que queremos dejar disponibles. De esta forma también enmascararemos las llamadas y nadie sabrá lo que hay detrás.

Ahora ya si que sólo exponemos al mundo ciertas urls de forma controlada. Manteniendo el acceso total y normal desde nuestra intranet .


El proyecto está en Github: https://github.com/jortilles/byPassPentahoLogin
  
Notas y agradecimientos:





martes, 8 de septiembre de 2015

Ejecutar Transformaciones y Trabajos de Kettle desde Java

Kettle ( a.k.a. Pentaho Data Integration) es una de las herramientas más versátiles que conozco. Ha pasado de ser una herramienta ETL a ser prácticamente un Lenguage de Programación Visual . Eso lo saben bien los amigos de Hitachi, Pentaho y Webdetails....

Recientemente me he visto en la necesidad de incorporar transformaciones y trabajos dentro de aplicaciones java..... Nada más sencillo:

Creamos nuestro proyecto Java...


miércoles, 19 de agosto de 2015

Divide y vencerás

Esta vez quiero compartir con vosotros la arquitectura de un proyecto muy interesante en el que estoy participando.

El problema:  El proceso ETL tarda demasiado. El proceso de integración de datos tarda mucho porque  hay algunas partes del proceso que manipulan imágenes y esto hace que el proceso sea tan lento que resulta inútil.




La solución: Divide y vencerás (Nada nuevo bajo el sol.... también es cierto...). Dado que, lo que ralentiza todo el flujo, es el procesado de imágenes. Se ha dividido el proceso ETL en dos partes:

  • La primera parte del proceso realiza todas las operaciones necesarias excepto el manipulado de imágenes y deja los registros en una cola ( RabbitMQ )
  • La segunda parte, recoge los registros de la cola, procesa las imágenes e inserta los datos en la base de datos de destino.
La ventaja: Puedo tener tantas fases II cómo necesite  que me permitan procesar los datos en paralelo  y limitar el tiempo total del proceso!




Este enfoque nos ha permitido reducir drásticamente el tiempo de ejecución del proceso ETL levantando tantos procesadores de Fase II cómo necesitemos. Así si hay pocos mensajes en la cosa, tan sólo tenemos un único proceso de Fase II (Tampoco hay que tener procesadores soñando con objas electrónicas ). Si la cola se satura... levantamos tantos procesadores de Fase II cómo consideremos oportuno 



Ya se que no es nada nuevo, pero me ha gustado compartir la arquitectura de este proyecto con vosotros.

Por cierto... La arquitectura me la propuso el propio cliente... (Al césar lo que es del césar )

viernes, 26 de junio de 2015

Por qué Open Source?

Algunos días me siento cansado y olvido por qué debemos esforzarnos por usar, promover y exigir el uso de tecnologías de fuentes abiertas.  Por fortuna, trabajo con herramientas open source y fácilmente recuerdo el motivo... Es importante utilizar  programas open source por el mismo motivo por el que es importante consumir alimentos donde ponga qué ingredientes los componen.

Piensa por un momento.... Consumirías un producto donde explícitamente te niegan la composición? No es lo mismo... Correcto... Pero piensa por un momento....
  • Quien te asegura que el sofware que gestiona tu banco hace lo que tiene que hacer y no te sisa céntimos?
  • Quien te asegura que el software que usan en hacienda hace los cálculos correctamente y pagas los impuestos que tienes que pagar?
  • Quien te asegura que el software que gestiona las centrales nucleares no tiene una puerta trasera y que no habrá un loco que la descubra y la use para infiltrarse.
  • Quien te asegura que no se espían tus comunicaciones....  bueno eso ya sabes que SI que se hace.

... por que la gente es buena y nunca a nadie se le ha ocurrido hacer programas malintencionados que ademas de las funcionalidades normales, tiene alguna que otra oculta...

Por estos motivos y muchos más, deberías asegurarte tener el acceso al código.... exactamente igual que con los alimentos..... Yo no me leo la composición de todo lo que consumo, pero saber que tengo esa información accesible y poder consultarla cuando tengo la necesidad me da confianza y tranquilidad...


jueves, 19 de marzo de 2015

Solicitud de Función: Zoom en lo Gráficos

English Version

Pentaho tiene una magnífica librería gráfica CCC pero, cómo cualquier herramienta, siempre hay alguna funcionalidad que te gustaría añadir. Y ese es el caso: hacer zoom en los gráficos.   En ocasiones tienes un gráfico con muchos valores y te gustaría poder hacer zoom en gráfico en diferentes puntos más allá de cambiar la selección que genera el gráfico.

video


No existe una función que te permita hacer zoom en un gráfico CCC  (al menos yo no la conozco). Pero  SI existe una función que te permite seleccionar un rango de valores en tu gráfico. Por lo que, con un poco de magia, podemos implementar esta función nosotros mismos.

Cómo funciona:

  1. Yo puedo seleccionar una parte del gráfico y obtener los puntos seleccionados
  2. Yo puedo almacenar esos puntos en una variable
  3. Yo puedo manipular el dataset del gráfico en el evento postFetch  para filtrar los valores que me llegan según los que tengo seleccionados.
 Vamos a ello:

sábado, 21 de febrero de 2015

Pentaho Audit Log

Ya he hablado de este tema con anterioridad  aquí , y no estoy descubriendo el fuego...  es un tema bastante manido   pero no por ello menos útil.

De lo que se trata aquí es de redirigir el  log de  auditoria de Pentaho a una tabla de base de datos que nos permita posteriormente analizarla con un informe cómo se hacía en la anterior entrada o con un cubo de accesos y tiempos de ejecución... :D


Para ello debemos: