martes, 5 de mayo de 2015

Ejecutar Kettle Transformation ktr por linea de comandos

Muchas veces es recomendable automatizar o programar algunas tareas de transformación de información o carga masiva a una base de datos, afortunadamente existen herramientas de transformación de datos para estos fines, recomiendo la suite de pentaho y específicamente kettle pdi data integration la que permite estas tareas y otras ahorrándonos bastante tiempo en escribir código

primero diseñamos un flujo de transformación de información para cargar una base de datos, esto genera el archivo .ktr (kettle tranaformation) o podemos crear un job programado para ejecutar bajo ciertas condiciones, este es mi flujo ktr:



El flujo anterior ejecuta 4 pasos y utiliza una base de datos postgres donde se cargan mas de 100 mil registros a una tabla de 20 campos en tan solo 3 segundos

paso 1: se trunca la tabla
paso 2: se lee el archivo de entrada (txt, csv, etc)
paso 3: se agrega la secuencia correlativa para cada registro
paso 4: se carga la tabla en bloques configurables, en mi caso en bloques de 50 mil registros

la tarea se puede ejecutar desde el modo gráfico o desde la consola mediante comandos, el comando y la salida para ejecutar una ktr (kettle transformation) es la siguiente:

slack@zion:~/programas/data-integration$ ./pan.sh /file:"/home/slack/desarrollo/appripley/metadata/pdi/skuloader.ktr" /level:basic
2015/05/05 10:16:55 - Pan - Logging is at level : Basic logging
2015/05/05 10:16:55 - Pan - Start of run.
2015/05/05 10:16:55 - skuloader - Iniciado despacho de la transformación [skuloader]
2015/05/05 10:16:56 - Salida Tabla.0 - Connected to database [appripley] (commit=50000)
2015/05/05 10:16:56 - Ejecutar script SQL.0 - Terminado la lectura de la consulta, cerrando conexión.
2015/05/05 10:16:56 - Ejecutar script SQL.0 - Procesamiento finalizado (I=0, O=0, R=0, W=1, U=0, E=0
2015/05/05 10:16:56 - Entrada Fichero de Texto.0 - Opening file: file:///home/slack/Xerox/Ripley/GestorDePrecios/muestras_ripley/pop/ReporteSkuEventoPreciosLMO_Mon.txt
2015/05/05 10:16:58 - Entrada Fichero de Texto.0 - linenr 50000
2015/05/05 10:16:58 - Añadir secuencia.0 - Número de línea 50000
2015/05/05 10:16:58 - Entrada Fichero de Texto.0 - Procesamiento finalizado (I=67294, O=0, R=0, W=67293, U=1, E=0
2015/05/05 10:17:02 - Salida Tabla.0 - linenr 50000
2015/05/05 10:17:02 - Añadir secuencia.0 - Procesamiento finalizado (I=0, O=0, R=67293, W=67293, U=0, E=0
2015/05/05 10:17:03 - Salida Tabla.0 - Procesamiento finalizado (I=0, O=67293, R=67293, W=67293, U=0, E=0
2015/05/05 10:17:03 - Pan - Finished!
2015/05/05 10:17:03 - Pan - Start=2015/05/05 10:16:55.618, Stop=2015/05/05 10:17:03.259
2015/05/05 10:17:03 - Pan - Processing ended after 7 seconds.
2015/05/05 10:17:03 - skuloader -  
2015/05/05 10:17:03 - skuloader - Los procesos Ejecutar script SQL.0 han finalizado correctamente, se han procesado 1 líneas. ( 0 líneas)
2015/05/05 10:17:03 - skuloader - Los procesos Entrada Fichero de Texto.0 han finalizado correctamente, se han procesado 67293 líneas. ( 9613 líneas)
2015/05/05 10:17:03 - skuloader - Los procesos Añadir secuencia.0 han finalizado correctamente, se han procesado 67293 líneas. ( 9613 líneas)
2015/05/05 10:17:03 - skuloader - Los procesos Salida Tabla.0 han finalizado correctamente, se han procesado 67293 líneas. ( 9613 líneas)


Existen múltiples tareas que podemos realizar con Kettle, se trata de una aplicación de pentaho BI open source y bastante potente, bien documentada por la comunidad y con un excelente blog de ayuda.

No hay comentarios: