jueves, 21 de febrero de 2013

Como hacer tests en Pentaho Data Integration (Parte I)

Es cierto que no es el tema más asequible y, por ello, no el mas adecuado para tratarlo en el primer post de este blog, pero, como dice aquel, "la ocasión la pintan calva". Así que, a aquellos que acaban de empezar con el Kettle, no les recomiendo esta entrada. Digamos que se situaría en un nivel avanzado. Estoy hablando de hacer tests a nuestras transformaciones y jobs creados con PDI.

Cuando llevas un cierto tiempo desarrollando con PDI, tus transformaciones empiezan a parecer arboles de gran tamaño, de los que salen múltiples ramificaciones. Usas con asiduidad bifurcaciones de flujo. Tus datos fluyen por un camino u otro de tu transformación, en función de valores que recoges por el camino de otras fuentes de datos,o bien son resultado de cálculos intermedios. Entonces aparecen los bugs, y no me refiero a errores de ejecución (esos ya los detecta el propio spoon), sino a resultados equivocados, inesperados y inapropiados.

Es en este punto que aparece la necesidad del test. Y empiezas a buscar por internet deseando encontrar el Santo Grial de los test para el PDI. Pronto te das cuenta que no existe. Y también te das cuenta que hay mas gente como tu, que llenos de iniciativa e ingenio se han montado sus propios sistemas "de ir por casa" pero que a ellos les funcionan. Uno de estos proyectos es el Testkitchen que podéis encontrar aquí. Si bien carece casi completamente de documentación y , como dice su autor, está desactualizado, me ha servido como punto de partida para empezar a experimentar con tests en PDI.

El testkitchen es un proyecto escrito en Java que utiliza los frameworks dbunit, dbdeploy y las librerías de kettle combinados para proporcionar un entorno de tests unitarios a las ETL de Pentaho. La idea es la siguiente: Supongamos que queremos probar una transformación que tiene como input unos datos guardados en una tabla A, realiza unos determinados cálculos con esos datos y finalmente arroja el resultado en otra tabla B. Escribimos un fichero XML (mock_data) que contenga los datos de la tabla origen A y otro XML con los datos que esperamos encontrar en la tabla B de resultados (golden_data). 
Testkitchen, mediante dbdeploy, rellena la tabla origen A con los datos de ese XML. A continuación ejecuta la transformación mediante una llamada a un método de la API de Kettle. Como consecuencia de la ejecución, se llena la tabla de resultados B. Testkitchen carga esos datos y, mediante dbunit, los compara con los almacenados en el fichero XML. Si el resultado és el mismo podemos garantizar que nuestra transformación funciona correctamente (al menos con el conjunto de test que hayamos preparado). Si no, es que se algo no ha funcionado como esperábamos.
Sin pensarlo demasiado podemos llegar a creer que no tiene demasiada gracia. Al fin y al cabo solo se trata de comparar resultados. Pero la ventaja radica en que este proceso es automático y eso quiere decir que se puede ha de repetir tantas veces como convenga, sobre todo cuando cambiamos algo en nuestra transformación. Cuantas mas veces se cambie, mas sentido tiene el asunto. Pensad que la alternativa implica comprobar los resultados a mano. Lo cual resulta tedioso y propenso al error humano.



sábado, 2 de febrero de 2013

Step 1: Introducción

En la vida de toda persona humana que, en su quehacer diario se pelea con datos, ya sea moviendolos, copiandolos, formateandolos, transformandolos, hay un antes y un despues de "toparse" con la herramienta Pentaho Data Integration que forma parte de la suite Pentaho Business Intelligence. 
En el despues te embarga la sensación de que el mundo es tuyo, de que ya no hay nada que no puedas hacer (siempre dentro de este ámbito claro). Y no deja de ser cierto. Sin embargo, como iremos comprobando, no debemos dejarnos llevar por la euforia y el fanatismo. Debemos aprender a distinguir entre, aquello para lo cual és más adecuado usarla, aquello para lo cual, si bien se podria usar, es mejor usar otros métodos, y finalmente aquello para lo que resulta del todo imposible o inadecuada.
Cuando piensas en el antes, te preguntas como demonios podia hacer segun que sin tener esta herramienta y cuanto costaba hacerlas.
Y es por eso que esta herramienta merece este blog entero. Creo que es justo que la gente conozca esta herramienta que puede facilitar la vida y el dia a dia de muchos profesionales.