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

martes, 13 de marzo de 2012

Diferencia entre dos flujos en Spoon

Hacía mucho tiempo que no tocaba Spoon, una herramienta que siempre me dejó con ganas de poder comprobar de qué es capaz realmente. Así que ha sido muy gratificante encontrarme con la posibilidad de utilizarla en mi trabajo, y de tener encima al lado a una persona con experiencia previa, como es el gran Isvapi.

Así que ya llevo unos días con un caso real. El clásico para este tipo de herramientas: tenemos que migrar los datos de un sistema a punto de morir, a otro nuevo y maravilloso. Si todo va bien y logro sacar un poco de tiempo, es posible que en las próximas semanas me anime a hacer una segunda parte de mi tutorial de iniciación. Pero hoy, como adelanto, la solución a un caso concreto que nos hemos encontrado.

El tema es que la migración la hacemos en dos fases. En la primera migramos todo el contenido de una tabla, y en la segunda el incremental. Por tanto, necesitábamos poder obtener la diferencia entre dos flujos de datos con la misma estructura (que sería el incremental a migrar). La realidad es que hacer algo así con Spoon es bastante fácil, gracias al paso Fundir filas.

Para explicar el proceso, vamos a suponer que trabajamos con una entidad Persona, que consta de un identificador, el nombre y los apellidos.

Lo primero que haríamos sería leer los dos repositorios de entrada, ya sean tablas de una base de datos, ficheros de texto, Excels... A continuación tendríamos que utilizar el paso indicado. Aquí su ayuda contextual:

Fundir dos flujos de filas, ordenadas por un campo clave. Se comparan los dos flujos y se señalan las filas que son iguales, han cambiado, se han eliminado y las nuevas.

Para que nos entendamos, lo que vamos a hacer es coger dos colecciones de datos con la misma estructura; en nuestro caso, dos colecciones de personas. El resultado contendrá la unión de las dos colecciones, indicando para cada elemento si:

- Aparece igual en ambas colecciones (identical).
- Aparece en ambas colecciones, pero algún dato ha cambiado (updated).
- Sólo aparece en la primera colección (deleted).
- Sólo aparece en la segunda colección (new).

Si vemos la configuración del paso, lo primero que tenemos que indicar son las colecciones que vamos a comparar; una de ellas será la de referencia. A continuación tenemos que dar un nombre al campo que se añadirá para indicar el resultado de la comparación (identical, updated, deleted o new).

Por último tenemos que especificar los campos que se utilizarán para hacer las comparaciones. Por un lado, hay que definir qué campos identifican a los elementos para poder indicar si estos están presentes en una de las colecciones, o en las dos. En nuestro caso, el campo id.

Por otro lado, tenemos que marcar los campos que se utilizarán para comparar los elementos presentes en ambas colecciones, y determinar si son idénticos, o han sido modificados. En nuestro caso añadiremos tanto el nombre como los apellidos.


Es importante incidir en la necesidad de que ambas colecciones estén ordenadas por los campos indicados como clave para que el paso funcione correctamente.

Una vez unidos los flujos y clasificados los registros, podemos utilizar el paso Switch para hacer lo que necesitemos con cada uno de ellos. En nuestro caso nos interesaba mandar a un fichero de texto aquellos registros que fuesen nuevos o hubiesen sido modificados, y a otro los que hubiesen sido eliminados.


El aspecto del proceso completo sería algo así.


jueves, 16 de diciembre de 2010

Tutorial de Pentaho: definición de un proceso ETL con Spoon

Hace ya varios meses publiqué una pequeña introducción teórica al concepto de Business Intelligence. Al final de esa entrada adelantaba mi intención de publicar algunos tutoriales en los que se mostrase cómo trabajar con herramientas de BI. Y hoy, por fin, ha llegado el primero.

Durante este tiempo he trabajado especialmente con algunas de las herramientas de la suite Pentaho, ya que las he necesitado para mi trabajo final de Máster. De esta forma he podido ver que pueden ser interesantes para algunas de las tareas que realizo habitualmente.

Un ejemplo claro son las cargas de datos. La integración de aplicaciones es algo que consume mucho más tiempo y recursos de lo que puede parecer. Por ejemplo, seguro que la mayoría de informáticos ha participado alguna vez en un proyecto en el que se tenía que hacer una migración de datos entre sistemas.

En este tutorial se desarrolla un pequeño ejemplo en el que se puede ver cómo trabajar con Spoon para obtener información de ficheros de texto, realizar un procesamiento sencillo, y después almacenarla en una base de datos. A partir de ahí, las posibilidades son enormes.

En este enlace podéis descargar el tutorial.

viernes, 19 de noviembre de 2010

¡Viva España!

No es que me haya dado un arranque patriótico ni nada por el estilo. Lo que pasa es que hoy toca un terrorífico capítulo protagonizado por nuestra querida amiga la eñe (ñ).

El mundo de las letras no es muy distinto del nuestro: hay letras grandes y pequeñas, que están hasta en la sopa y que no encuentras si no es en kilómetros, que se alían para sus chanchullos, y hasta las hay mudas. Por tanto no hay que extrañarse si decimos que también hay letras marginadas, exluídas e ignoradas.

En este grupo se encuentran, mayormente, todas las letras que no son utilizadas por el rey de los lenguajes, el de iu es ei, el inglish. Por tanto, para nosotros los españoles, tenemos la á, é, í, ó, ú y, sobre todo, la ñ. De España.

Y si hay un contexto en el que se maximiza la discriminación hacia estas letras, ese es el informático. Todos hemos sufrido alguna vez las consecuencias de ser fieles a nuestra rica lengua incluyendo en algún código acentos y eñes. Sería interesante cuantificar la cantidad de horas que se han empleado en este mundo en estudiar errores que finalmente eran causados por los denominados caracteres extraños, y daría para hablar de lo importante que es pararse a pensar antes de hacer las cosas (lo digo por los que crearon las primeras codificaciones), pero vamos a centrarnos.

En este post simplemente voy a exponer un nuevo caso, que además puede afectar incluso a aquellos pobres hombres que, como yo, ya han renunciado a utilizar su idioma en todo su esplendor y hace anyos que abdicaron.

Ubiquémonos. Estamos trabajando con la suite de BI Pentaho. Accedemos a la consola de usuario, y de ahí a la creación de un nuevo informe. Entre las fuentes de datos podemos ver las que la herramienta trae, pero nosotros queremos crear una nueva, así que pulsamos el botón Add. En el diálogo, damos un nombre, escribimos una consulta, previsualizamos, añadimos, damos un nombre a mostrar, y aceptamos como si nada. Y entonces...

¡Aparece el mensaje!


(There are either no Data Source(s) defined in the metadata, or you do not have permission to access any of the Data Source(s). Please create one or more Data Source(s) using the Metadata Editor and then publish them to the Pentaho Server. Or, use the Metadata Editor to give the appropiate user permission to access to the Data Source(s).)

Que en la lengua de Cervantes, y con la capacidad de síntesis de Pocholo, significa que no hay fuentes de datos. Tras ello, un nuevo mensaje.



(pentaho-ajax.js.pentahoResponse():TypeError:'null' is null or not an object)

Que no se puede traducir a ninguna lengua seria.

Y ahora nos encontramos con que en la lista de fuentes de datos no hay niente. Pourquoi??

Cerramos el reporte, volvemos a acceder para crear otro desde cero... y la misma historia. ¿¿¿Qué ha pasado con las fuentes de datos???

Pues realmente no ha pasado nada. Están ahí. El problema es que Pentaho sigue un curioso comportamiento. No tiene problema en escribir una eñe, pero le da la risa cuando tiene que leerla, y se queda tonto.

Cuando creamos una fuente de datos, Pentaho crea un fichero de dominio en la ruta %Pentaho_Base%/server/bi-server/pentaho-solutions/system/metadata/domains, con el nombre que le hayamos dado. En ese fichero, con formato xml, se define la fuente de datos: conexión, consulta, etc, etc, etc. Si accedemos a esa ruta, veremos que, efectivamente, hay un fichero de definición con el nombre que le dimos a nuestra fuente de datos. Pero si lo abrimos... ¡ahí está! ¡La repudiada eñe!. En la descripción del locale Pentaho ha puesto Español (España), con todas las letras. Y ahora no es capaz de procesar el fichero.

Así que la solución inmediata es tan simple como editar el fichero .domain y quitarle el tupé a la eñe. Sólo con eso podremos crear de nuevo un informe y tendremos tanto las fuentes de datos de Pentaho como la que nosotros hemos creado, y podremos seguir con el proceso.

Otra posible solución es mudarnos a Estados Unidos, o instalarnos un Sistema Operativo en inglés.

Este problema no es exclusivo de la creación de informes; se da exactamente igual al crear dashboards.

Pero bueno, no nos quejemos. Peor lo deben tener los chinos...

domingo, 2 de mayo de 2010

Business Intelligence

Hoy doy una pequeña introducción a uno de esos conceptos que se ponen muy de moda en el mundo de la informática, y con el que en principio trabajaré en mi trabajo final de máster: la Inteligencia Empresarial, o Business Intelligence, que los términos ingleses siempre se imponen.

El objetivo del BI sería explotar la información almacenada en los distintos sistemas de información de una empresa u organización, con el fin de ayudar en la toma de decisiones. Para ello se siguen procesos ETL (Extract, Transform, Load), en los que se obtienen datos de distintas fuentes, se procesan (se combinan, filtran, transforman, homogeneizan...), y finalmente se cargan en un nuevo almacen de datos.

Las fuentes de datos de las que se parte pueden ser completamente heterogéneas, tanto a nivel técnico como en cuanto a la información que almacenan: bases de datos de clientes, hojas excel con datos financieros...

Una vez realizadas las transformaciones, se definen Indicadores (KPI, Key Performance Indicators) que son datos que nos ofrecen información interesante para la toma de decisiones. Por ejemplo, ¿en qué grado se ajustan los resultados de los proyectos a las previsiones realizadas? ¿en qué porcentaje se exceden los costes de los proyectos? ¿cuál es el índice de errores detectados para nuestros sistemas en producción?...

Por último, podríamos definir Cuadros de Mando, que serían informes en los que se presentan resúmenes de esta información de una forma rápida y visual, sirviendo, como se ha dicho, de apoyo a la hora de tomar decisiones en la organización.

Esta sería, a grandes rasgos, la idea detrás de la Inteligencia Empresarial. Si todo va bien, en próximas entradas entraré en mayor detalle proporcionando algunos ejemplos concretos, e introduciendo el uso de herramientas como Pentaho y Jaspersoft BI Suite.