Introducción a Talend

Talend
De un tiempo a esta parte he tenido la oportunidad (y la necesidad) de utilizar herramientas de transformación de datos ETL.

La aplicación de un ETL es la integración de sistemas que intercambian datos. Esto y el precio típico de estas herramientas, hacía que se utilizaran casi en exclusiva en integración de aplicaciones CRM , ERP o BI. La llegada del open source nos facilita el acceso a los ETLs.

El caso es que cuando aprendes a manejar estas herramientas, se te ocurren mil maneras de aplicarlas.

 

Los que hemos tenido que sufrir proyectos de migración de datos entre dos aplicaciones, sabemos que es un proceso muy costoso en tiempo; que requiere tediosas tareas de normalización, transformación y comprobación de los datos migrados.

Los ETLs son herramientas diseñadas específicamente para manejar y transformar datos. Su objetivo es liberarnos de las más tediosas tareas, dejando tiempo a la comprobación; la verdadera clave del asunto.

He podido manejar varios ETL. Microsoft DTS, Kettel y Talend, cada una con su enfoque particular. Las tres son buenas herramientas; pero hoy voy a hablar de Talend Open Studio for Data Integration (TOS). La principal ventaja es que está hecho en Java, te permite usar Java y genera Java.

 

Talend utiliza eclipse como entorno de trabajo.

Talend utiliza eclipse como entorno de trabajo.

 

Esto quiere decir que está desarrollado en Java, y por lo tanto dispone de un entorno de desarrollo multi-plataforma. Además, puede usar Java como lenguaje de apoyo en las tareas de transformación de datos, y se pueden crear nuevos componentes usando esté lenguaje. Por último, todas las operaciones que hacemos de forma visual; Talend las transforma en código Java, que compila y entrega en forma de un archivo .jar y un script .sh o .bat; para poder ejecutarlo desde Linux, Windows o Mac.

 

 

Los componentes de Talend

Talend te permite de forma visual conectar las fuentes de datos con el sistema de destino, transformando los datos mediante componentes ya creados en la aplicación.

Reduciendo a lo básico los componentes de Talend, podemos clasificarlos como: componentes de entrada, de salida, y de transformación de datos.

 

Componentes de entrada y salida de datos

Para un ETL es imprescindible disponer de una buena colección de conexiones de datos que le permitan acceder a todo tipo de sistemas. Talend cuenta con una gran cantidad de componentes, y con una comunidad que trabaja añadiendo nuevas opciones.

En cuanto a bases de datos, podemos encontrar desde las más generales como: MySQL, SQL Server, Oracle, Postgre; a aquellas con aplicaciones más especificas como Grenplum, ParAccel o eXists.

También disponemos de componentes para adquirir o volcar datos utilizando ficheros de diferentes tipos: XML, Excel, delimitados (csv, tsv, etc.), ficheros posicionales (ancho fijo), JSON; e incluso la posibilidad de capturar las filas mediante expresiones regulares.

Para terminar, disponemos de conexiones directas con aplicaciones concretas como: Sap, Sugar CRM, Open Bravo, Sales Force, Alfresco, etc.

 

Componentes de transformación de datos

Una vez tenemos la posibilidad de conectar los dos sistemas, tenemos que realizar el trabajo propiamente dicho. Para esto, disponemos de numerosos componentes que nos permiten manipular los datos a nuestro antojo. Podemos hacer filtros, conversiones de tipo, búsquedas por aproximación, uniones, ordenar, hacer reemplazos. Y como no; disponemos de componentes como el tJava o tJavaRow, que nos permiten trabajar los datos programando nuestras funciones.

 

Otros componentes

Alrededor de los componentes de manipulación de datos, entrada y salida; tenemos otros tantos componentes para dotar a la herramienta de funcionalidades de alto nivel. Podemos manipular ficheros en el sistema de archivos, acceder a ficheros mediante FTP y HTTP, enviar y recibir emails, hacer llamadas al sistema operativo, ejecutar otros programas o jobs de Talend, comprimir o descomprimir archivos, funciones criptográficas. Una vez más la comunidad añade nuevas funciones; como un componente para acceder a los datos de Google Analytics mediante su API.

 

 

Utilizar Talend

Lo primero que debemos entender para empezar a usar el programa es, que lo que en un sistema de programación es un flujo de ejecución; en un ETL es un flujo de datos. Esto son: filas de datos que serán procesadas una a una, realizando las modificaciones que configuremos.

 

Flujo de datos

Flujo de datos

 

 

Ejemplo

Para entender como funciona esto, imaginemos un ejemplo muy simple. Tenemos dos bases de datos con columnas distintas que queremos interconectar. Ambas manejan los datos de clientes, pero formas distintas; podrían ser una aplicación de eCommerce y un CRM por ejemplo.

Comercio:

id
Identificador del cliente
Nombre
Nombre del cliente
Apellidos
Apellidos del cliente
Compras
Número total de compras realizadas en la tienda
Importe Total de compras
Importe acumulado de compras
Fecha de última compra
eso mismo

 

CRM:

id
Identificador del cliente, cross platform
Denominación
Apellidos, nombre del cliente
Comprador
Indica si es un verdadero cliente (usuario que ha comprado) 1: comprador 0: no-comprador
Categoría de cliente
Categoría del cliente según facturación generada:

  1. 0 -> 300€
  2. 301 -> 2000€
  3. 2000 -> x
Activo
Se consideran activos aquellos clientes que han comprado en los últimos dos meses 1: activo 0: Inactivo

 

Proyecto

Vamos a crear un nuevo proyecto en Talend y en este proyecto crearemos un “job” que se encargará de hacer el trabajo ;)

Diseño del job

Diseño del job

Añadimos tres componentes. Una conexión de entrada de datos, una de salida, y un tMap: el componente de transformación básico de Talend. En este caso estamos sacando los datos de una tabla de Oracle y volcándolos en una tabla de MySQL. Para que los datos pasen de un componente a otro, enlazamos la salida de cada uno con la entrada del siguiente.

 

Configuramos la conexión a la base de datos de entrada. La consulta con la que extraemos los datos, puede ser un join complejo, una vista, procedimiento almacenado, etc.

Configuración de fuente de datos

Configuración de fuente de datos

Recuperamos el esquema de la tabla de entrada:

Esquema de Entrada

Esquema de Entrada

Hacemos lo mismo para la tabla de destino, en este caso el componente tiene esquemas tanto de entrada como de salida:

Esquema de salida

Esquema de salida

La clave del trabajo está en el mapeo de los datos de entrada a los de salida. Vamos a ver cada caso:

Editor del tMap

Editor del tMap

id
Nos limitamos a enlazar el campo de entrada con el de la salida, arrastrándolo de un punto a otro.
Denominación
Componemos el campo de salida indicando apellidos “, ” y el nombre.
Comprador
Si hay alguna compra indicamos un uno, y en caso contrario un cero. usamos sintaxis de Java.
Categoría
Aquí podemos ver la potencia de Talend. Para aplicar los rangos que definen las categorías, usamos una función Java personalizada. Se guardan en un archivo de código y nos limitamos a consumir sus funciones
Activo
Evaluamos la diferencia entre la fechas de las última compra y la actual. En este caso estamos utilizando funciones predefinidas de Talend.

TalendDate.diffDate(row1.ultimaCompra,TalendDate.getCurrentDate(),"MM")<=2 ? 1 : 0

 

Talend realizará las asignaciones configuradas por cada fila de los datos de entrada.

Funciones personalizadas

Es posible crear nuestras propias librerías de funciones, que luego utilizaremos desde el editor.

  • Funciones propias
  • Constructor de expresiones

 

 

Ejecución y despliegue

Podemos ejecutar el job desde el propio entorno de trabajo, o generar una versión compilada que ejecutar desde la línea de comandos, desde el cron o desde otro programa.

El proceso de exportación compila el código fuente generado por el diseñador y los empaqueta en un zip.

 

Exportar trabajo en Talend

Exportar trabajo

 

El paquete contiene todo lo necesario para ejecutar el trabajo de forma autónoma: el .jar de la aplicación y todas sus dependencias.

La ejecución desde el entorno de desarrollo nos ofrece mucha más información. Podemos depurar el proceso, ver la velocidad de propagación de los datos, o incluso ver los datos según van pasando.

Ejecución del job en Talend

Ejecución del job en Talend

 

 

Versión comercial

Como tantos Otros proyectos Open Source, Talend tiene versiones abierta y de pago. Todo lo que hemos visto está incluido en la versión abierta.

Dispone de varias versiones de pago, caras por cierto; aunque probablemente no tanto para el estándar ETL.

Perspectivas

El mismo programa fusiona las herramientas de Integración y Análisis sólo con cambiar de perspectiva en Eclipse. La herramienta de Análisis antes conocida como Talend Open Profiler (TOP); ahora se llama Talend Open Studio for Data Quality. Complementa la herramienta de integración analizando tus bases de datos y diagnosticando problemas de calidad de datos. Ej Duplicidades. La versión gratuita puede ser descargada desde la página de Talend como una herramienta aparte.

Joblets

Permite encapsular subprocesos como “joblets”. Un joblet es una especie de componente por composición. Muy cómodo.

Talend Administration center

Se instala una aplicación web en el servidor que permite gestionar remotamente el servidor. Entre sus funciones encontramos:

  • Planes de ejecución.
  • Funciones avanzadas de despliegue.
  • Información de ejecución en tiempo real.
  • Programador (scheduler).
  • Balanceo de carga.

Repositorio

Instala un subversion que permite compartir los trabajos en un equipo de desarrollo.

Previsualización de datos

Podemos ver los datos en componentes de entrada y salida. Te evita tener que utilizar otras herramientas para hacerlo.

Esquemas dinámicos

La versión gratuita sólo está preparada para trabajar con esquemas conocidos. Esta funcionalidad te permite mapear directamente campos en la entrada contra la salida, sin necesidad de conocer su existencia en el momento del desarrollo.

Componentes

Las versiones de pago incorporan componentes no incluidos en la versión gratuita. Por ejemplo la versión data quality, incorpora el componente tMatchGroup, clave para los procesos de de-duplicación. Además los proyectos creados con las versiones comerciales no pueden cargarse desde la versión Abierta.

Soporte

Esta es buena. El mayor de los problemas de Talend es que es muy difícil encontrar documentación. Supongo que es consecuencia de que el modelo de facturación de Talend consiste exactamente en esto: un coste anual de soporte por desarrollador.

 

No abundaré más en las funciones de la versión de pago; que son estupendas ( e imprescindibles para determinadas aplicaciones). La ventaja de tener una versión gratuita es que podemos utilizar un ETL allí donde lo necesitemos, y no usar otras soluciones que no están hechas a medida de los trabajos de manipulación de datos.

 

Iré publicando un post sobre este Talend de tanto en tanto para facilitar el acceso a la herramienta.

 

Enlaces

 

 

5 comentarios para “Introducción a Talend”

Deja un comentario

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

?>