[Talend DI] – My first Job: Cargar un Excel a una DB

Hola, como les comenté en la primera entrada,  estaré realizando una serie de artículos sobre como usar Talend Data Integrator para integrar orígenes de datos y transformar los datos para exportarlos a otros lugares.

Primero, pasaremos por entender un poco la interfaz de Talend DI.

El Repositorio

talend1 (1)

El Repositorio es el área central dónde podemos acceder a los diferentes elementos de trabajo:

  • Business Models: los modelos de negocio permiten diseñar de manera gráfica las necesidades de integración, esto permite expresar de una manera gráfica, lo que se desea y luego trasladarlo a Jobs.

índice

  • Job Designs: es la base fundamental de Talend, acá se construirán cada uno de los “Jobs” para la integración de datos.
  • Contexts: Se pueden crear archivos que contienen variables, las variables (y/o constantes) pueden utilizarse para ser reemplazadas en los Jobs, almacenarse en un archivo, etc, esto permite re-utilizar dichas variables en diferentes Jobs.
  • Code: Permite crear “snippets” de código Java que podemos luego invocar y utilizar en nuestros Jobs.
  • SQL Templates: Son plantillas de sentencias SQL pre-construidas y que reciben argumentos y se usan en Talend para ciertas operaciones.
  • Metadata: es el repositorio de archivos y conexiones que se usan como diferentes orígenes de datos.
  • Documentation: Permite incorporar diferentes archivos como documentación del proyecto actual
  • Recycle Bin: cada vez que se elimina un objeto dentro de Talend, no se borra directamente sino que va a una papelera de reciclaje, para recuperarlo en caso de ser necesario.

Creando nuestro primer Job

Nuestro primer Job será muy sencillo, consistirá en cargar un archivo de Excel con unas cuantas miles de filas, en una tabla en postgreSQL, fácil, rápido.

  • Botón derecho sobre “Job Designs” y accedemos a la opción “New Job”:

talend2 (1)

Las opciones importantes son:

  • Nombre: Es el nombre del Job, no debe contener espacios
  • Propósito y Descripción:son opcionales y permiten describir mejor el Job
  • Versión: es muy importante mantener versionado el Job, sobre todo porque podremos exportar diferentes versiones del mismo, al presionar la M mayúscula incrementan la versión mayor (1.0) y la m minúscula la versión menor (1.1).
  • Estado: permite determinar si este proyecto está en desarrollo o ya en producción.

Al finalizar, la ventana de Talend cambia a esta forma:

Talend8.png

Repositorio a la izquierda, Paleta de componentes a la derecha, Panel de información de componentes debajo y un gran canvas o área central, para diseñar el trabajo.

Metadata: nuestros primeros orígenes de datos:

Vamos a incorporar los orígen y destino de datos en la sección “Metadata” del Repositorio.

meta

Al desplegar, podemos ver todos los diferentes tipos de orígenes de datos con los que contamos en Talend DI.

Sobre File Excel, botón derecho e indicamos “Create Excel File”.

Cargando un Excel

  • Le damos una descripción al archivo de Excel y presionamos “Siguiente”

sample1.png

  • Buscamos el archivo de Excel (si es un archivo openXML xlsx, marcar la casilla “Read Excel2007 Format”), seleccionamos la pestaña que será origen de datos:

sample2.png

  • Configuramos el origen, esto es, si es UTF-8 o latin1 (ISO-8859-1), al ser un documento de Excel hecho en Windows, si escojo UTF-8 se ve así:

1 (1)

Asi, que debe ser ISO-8859-1:

2.png

La data empieza en la columna A, no es necesario ignorar filas al inicio o columnas al inicio del documento, y la primera fila representa los nombres de las columnas de la tabla, adicionalmente, la última columna del Excel la vamos a descartar, la configuración queda así:

sample3.png

  • Por último, debemos definir la “metadata”, es decir, la estructura tipo tabla, con nombre de campo y tipo de datos, para cada columna de la tabla:

Sample4.png

En nuestro caso hemos definido que:

  • ID es clave primaria
  • DISCOUNT, AMOUNT y TAXES son numeric Float de precisión 2

Opcionalmente (pero muy recomendado) podemos guardar este Schema Table en un archivo XML, esto nos permitirá re-utilizar esta definición de tabla en cualquier otra parte.

export.png

Presione “FINISH” y ya hemos terminado con el archivo de Excel, ahora la conexión a la DB.

Conectando a postgreSQL

Las conexiones a DB son muy semejantes entre sí en Talend, en nuestro caso, nos conectaremos a un simple postgreSQL local para enviar los datos del Excel para allá.

  • En Repositorio, seleccionar “Db connections” y luego de darle un nombre, configuramos la conexión en la sección 2 del asistente:

db1.png

En la larga lista de tipos de bases de datos, seleccionamos postgreSQL, definimos host, usuario, contraseña, puerto y base de datos.

Si luego de colocar nuestros parámetros y presionar check está todo correcto, veremos el siguiente diálogo:

db2

En general, quedando la selección así:

db3

  • Presionar “Finish” y ya hemos creado el origen y destino de nuestro ETL, ahora ¡A por el Job!.

Mi primer Job

Todos los Jobs en Talend consisten en una serie de pasos, que se incorporan a través de componentes en la “Paleta de componentes”, cada componente puede ser de entrada, de salida o de operación, a su vez, cada componente se une al siguiente luego de haber completado su operación y/o en cada iteración (si es un componente de múltiples entradas).

Cargar un componente en Talend es tan sencillo como arrastrar un componente tanto desde la Paleta como un origen desde el Repositorio, arrastramos el Excel desde el repositorio:

excelin

Y hacemos lo mismo con PostgreSQL:

pgout.gif

Como vemos, Excel (in) será nuestro origen de datos y postgreSQL nuestro destino de datos (out).

Parámetros de cada componente

Cada componente tiene sus propiedades y características que pueden ser configuradas, en nuestro caso, vamos a configurar que el Talend le haga un “auto-trim” a toda columna que sea texto.

Para ello:

  1. Hacemos click sobre el componente “Sample Excel”
  2. En la pestaña de abajo (Component) buscamos “Advanced Settings”
  3. Buscamos la opción “Check Column to Trim”

Peek 31-12-2017 01-25

Vamos al paso siguiente, filtrar los datos.

Filtrando datos: tFilterRow

El componente tFilterRow nos permite filtrar los datos por uno o por más campos y/o parámetros (incluso escribir código java de filtrado, que veremos más adelante en otro artículo).

tFilterRow tiene 2 salidas, una salida “filter” (los datos correctamente filtrados) y “rejected” los datos que fueron rechazados por las condiciones de filtrado, si se desean recuperar lo que el tfilterRow rechazó, use la salida “rejected”.

Voy a remover del Excel toda fila que tenga PRODUCT o ID vacío.

  • Agregamos el componente tFilterRow y lo conectamos al Excel

Peek 31-12-2017 01-30

Nota: Fila: Main significa que todo el conjunto de datos (sin iterar) que salen del Excel serán entregados a tfilterRow, en algunos componentes, se podrá iterar de fila en fila.

  • Definimos los criterios de “!=” (no-igualdad) en vacío y “” para indicar vacío.

Peek 31-12-2017 01-33

Procesando filas: tMap

tMap es uno de los componentes principales de Talend DI, nos permite “mapear” un recurso, unir y/o dividir origenes de datos, hacer split, crear múltiples copias, etc.

  • Agregamos un componente “tMap” y lo unimos al tFilterRow a través de la opción “Filter”

tmap.gif

  • Doble click sobre el tMap para entrar en el modo de edición del Mapping de datos:

tmap2

 

  • Seleccionar el simbolo “+” en la salida de datos, crear nueva salida de datos
  • Seleccionar la tabla origen de datos al hacer click sobre su título, arrastrar todos los campos a la salida de datos
  • y voilá!, tenemos un origen conectado a una salida de datos.

Conectando tMap contra nuestra salida de datos

pg2.gif

Conectar el tMap contra una salida de datos es tan sencillo como:

  1. Click derecho sobre tMap, buscar la opción “fila”
  2. En la opción “Fila”, seleccionar el destino de datos que hemos creado en el paso anterior del tMap.
  3. Hacer click sobre la salida de postgreSQL.

Ahora, vamos a configurar nuestra salida de datos.

El componente tPostgresOutput

El componente tpostgresOutput permite sacar datos desde Talend hacia nuestra base de datos, es bastante sencillo de “configurar” (ya viene pre-configurado puesto que ha sido extraído desde el Repositorio.

pg3

  1. Conectamos el tMap al destino postgresOutput
  2. Definimos el nombre de la tabla, en nuestro caso, el Talend se encargará de crear la tabla por nosotros (opción “Action On Table”)
  3. Toda nueva fila será insertada (opción: “Action on Data”)
  4. Presionamos “Edit Schema” y verificamos que los tipos de datos postgreSQL coinciden con los de la Tabla destino
  5. Presionamos “Sync Columns” en caso de que realicemos algún cambio en el tipo de datos en el tMap.

Ya estamos listos para pasar nuestro Excel a postgreSQL.

Running a Job

Ejecutar un job en Talend es tan sencillo como presionar el botón “Run” que está en la pestaña “Work”:

erro

Nos encontramos con nuestro primer error en Talend, como vemos, es bastante explicito, nos dice que la columna “AMOUNT” es de tipo REAL, pero la tenemos definida como tipo “String”, así que debemos hacer una transformación de tipo, eso lo hacemos directamente en el componente.

Cambiando el formato de número

Como nuestro Excel tiene formato latino (punto “.” para separar miles y coma “,” para separar decimales) debemos cambiar dicho formato, para ello:

num1.gif

  1. Cambiamos los campos a “Float”
  2. Seleccionamos el Property Type a “Built-in” (desactivamos que viene desde repositorio).
  3. Buscamos en “Advanced Settings” la opción “separador avanzado de números”
  4. Colocamos nuetro formato “.” y “,”
  5. Listo

Ya con esto, el Job debería funcionar sin problemas.

al presionar “Run” vemos que ejecuta sin problemas:

run

Y si vamos a postgreSQL vemos que la tabla se encuentra en la DB y tiene datos:

Peek 31-12-2017 02-11

Compilar un Job

Los Jobs de Talend no están hechos para ser ejecutados desde el diseñador, sino como procesos ejecutables Java que puedan ser invocados de manera autónoma, para ello está la opción “Build Job”.

Peek 31-12-2017 02-14.gif

 

Cuando compilamos un Job, simplemente estamos creando un archivo Java (extensión .jar) y unos shell scripts (unix: sh, Windows: bat) que permitirán invocar este proceso ETL desde la cónsola de comandos de nuestro sistema.

  1. Seleccionamos la ruta destino del Job (comprimido en .zip)
  2. Seleccionamos la versión que deseamos exportar
  3. Tipo de Job (para .jar, se usa “standalone Job”)
  4. Definimos si deseamos los shell script de Windows o Unix/Linux
  5. Definimos por último si deseamos o no exportar los Java sources con el .zip

Y Listo, Build Job!.

Conclusiones

No nos dejemos confundir que por la sencillez con la que hemos realizado este Job, Talend no es una herramienta profunda y compleja, pero a su vez poderosa. Hemos creado nuestro primer y básico Job de Talend DI, en próximas entregas estaremos profundizando en más aspectos de integración, utilizaremos orígenes heterogéneos (desde archivos en un FTP hasta documentos que llegan por email) y ejecutaremos algunas transformaciones complejas con los datos.

Espero que les haya servido este mini-tutorial como un abre-boca de todo lo que nos espera.

Saludos y ¡Happy Hacking!

 

Anuncios

3 comentarios sobre “[Talend DI] – My first Job: Cargar un Excel a una DB

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s