Kettle, la navaja suíza de la ETL
¿ETqué? Sí, eso es lo que pensamos todos cuando escuchamos esto. ETL son las iniciales de Extract, Transform an Load, esto es, coger datos desde una fuente, transformarlos y volcarlos a otro soporte. ¿Y en qué consiste esto?, pues por ejemplo en coger los datos de un fichero Excel y cargarlos en un MySQL ¿aún pensáis que nunca habéis utilizado la ETL?
En muchos proyectos hay que realizar ETL, pero normalmente no tan sencillas como el ejemplo anterior, sino que debemos combinar datos de varias bases de datos, adaptarlos, mezclarlos y volcarlos a otra base de datos, interconectando distintas aplicaciones en la empresa, como por ejemplo pasando la lista de clientes de un CRM a un sistema de gestión de incidencias de forma periódica, etc.
Como “buenos” programadores, lo primero que se nos ocurre es tirarnos a picar código en nuestro lenguaje de programación favorito que haga estas integraciones de datos… si, yo también lo hice, aunque Frive ya me enseñara el Kettle en los maravillosos años de Shylex… El problema es que programarlo es muy propenso a errores y a la larga también más costoso en tiempo.
Con el Kettle, disponemos de una herramienta que nos permite definir estas transformaciones de forma gráfica, interconectando bloques que tienen diversas funciones. Es tremendamente versátil, ya que tenemos bloques que nos permiten leer y escribir de cualquier base de datos, fichero Excel o CVS, Access, etc. y otros que nos permiten operar con los campos renombrando, normalizando, calculando campos en función de otros, mapeando valores, realizando buśquedas auxiliares en bases de datos, normalizando/desnomalizando los datos de distintas filas en una sóla, etc, etc. Las transformaciones que se hacen con el Kettle se guardan en un fichero ktr que luego puede ser ejecutado desde línea de comandos o un fichero batch.
Ahora mismo o lo estoy usando para pasar datos de un sistema de contabilidad y una aplicación de control de producción a un ERP, y de momento no me he encontrado nada que no se pueda hacer con el Kettle, eso sí, hay un bloque que permite ejecutar código javascript dentro de las transformaciones y que estoy utilizando extensamente…
En fin, aprender a utilizar el Kettle lleva un par de días, pero a la larga ahorra mucho más trabajo, así que, una vez más hay que pensar un poco las cosas antes de tirarse al monte a picar código :D.