El siguiente artículo presentará Ejemplos de herramientas ETL con el objetivo de brindar un primer acercamiento al mundo de los ETL, cosa de que si a usted le nombran la sigla ETL/ELT sepa a qué se refiere y además conozca qué herramientas dispone para crearlos. Para lograr este objetivo, lo primero que debemos hacer es describir qué es un ETL. Luego pasaremos a ver algunas herramientas disponibles en el mercado y además se mostrará un ejemplo para cada una.
La idea de este artículo no es solo mostrar las ventajas que tienen las herramientas a la hora de desarrollar y mantener procesos ETL versus código directo (hand coded), sino que usted mediante ejemplos, pueda elegir la dinámica que más se acomode a sus necesidades.
Ya con las pretensiones de este artículo claras, podemos comenzar...
ETL es un proceso de compilación de datos que consiste en extraer (Extract) datos desde diversas fuentes (archivos planos, hojas de cálculo, bases de datos, etc.), transformarlos (Transform) mediante operaciones como limpiar, reformatear, pivotear, entre otros, y finalmente cargarlos (Load) en uno o más destinos (tablas de una BD, archivos planos, hojas cálculo, etc.) [1]
Nota: ELT propone un orden distinto para el proceso: Extraer, Cargar y luego Transformar.
Para más información recomiendo leer estos 2 artículos:
Existen dos formas (no excluyentes) de afrontar la creación de procesos extracción, transformación y carga (ETL). Una es mediante herramientas del tipo “Drag & Drop” y otra mediante código a mano (hand-code). Ahora bien, una herramienta surge ante necesidades/problemas.
Consideremos los siguientes escenarios:
Bueno, aquí es cuando aparecen las "ETL Tools" como aquellas herramientas especializadas en brindar soluciones a estos problemas o facilitar su resolución. ¿Por qué?
Existen las siguientes desventajas en los desarrollos del tipo hand-code:
Las herramientas ETL del tipo "Drag & Drop" ofrecen las siguientes ventajas:
Nota: Es importante aclarar que es posible resolver proyectos ETL/ELT usando solo el estilo “hand-coded”, el problema radica en la velocidad de desarrollo, escalabilidad y mantenimiento en el tiempo de estos procesos.
A continuación, presentaré algunas herramientas disponibles en el mercado con las que puedes construir tus procesos de ETL/ELT. Para cada una se dejará un ejemplo paso a paso.
La solución proporcionada por SAP permite crear ETL/ELT de manera bastante sencilla. Gracias a su interfaz “drag and drop” permite que su aprendizaje y uso sea rápido. Una gran ventaja que tiene Sap BODS es la gran cantidad de operaciones predefinidas con las que cuenta (transformaciones, calidad de datos, bulk load, etc.) [2].
La siguiente imagen nos muestra cómo en muy pocos pasos podemos aplicar criterior de calidad de datos, validación y almacenar el resultado en múltiples destinos:
Un punto importante a considerar es la facilidad para encontrar información ya sea mediante foros, páginas oficiales y no oficiales, la comunidad de SAP BODS es muy activa ante preguntas de otros usuarios. Otra ventaja de SAP Data Services es que tiene herramientas que permiten el seguimiento y monitoreo de sus ejecuciones. Además permite la auto documentación de sus desarrollos.
Un punto clave a considerar, es que SAP exige la compra de su licencia, a la que se debe incorporar un costo de mantención aproximado de un 22% de la compra.
A continuación, presento un ejemplo paso a paso de cómo cargar un listado de países disponibles en Excel, hacia a una tabla en la base de datos SAP IQ y a un archivo plano.
Es un software open source de integración y gestión de datos para conectar, acceder y transformar cualquier tipo de dato [3]. Es una herramienta creada en Eclipse que permite generar código Java sin la necesidad de escribir una sola línea de código (aunque es posible agregar código Java en caso de ser necesario) [4].
En la imagen se cuenta con un origen (Ventas) al cual se aplican transformaciones cuyo resultado es cargado en más de una tabla, con distintos formatos, en un solo paso:
Con respecto a la comunidad de Talend, un punto positivo es que tiene foros de discusión, videos tutoriales y página oficial para la comunidad. De hecho hemos creado un curso en youtube que te puede ayudar en el uso de la herramienta: Curso Talend Open Studio Gratis.
El siguiente ejercicio consiste en tomar el archivo plano (txt) generado en el ejemplo anterior con Sap BODS para cargarlo hacia una tabla en MySQL, generar un archivo Excel de salida y desplegar por pantalla los datos en formato log.
Es la alternativa on-premises que proporciona Microsoft para la creación de procesos que permitan integración y transformación de datos. SSIS se utiliza principalmente como solución para problemas complejos que requieren: descarga de archivos, cargar Data Warehouses, minería de datos y manejo de objetos SQL entre otros.
SSIS puede extraer datos de diferentes fuentes y cargarlos en múltiples destinos. Por nombrar algunas fuentes tenemos: Archivos planos, XML y bases de datos relacionales [5].
A continuación, presento un ejemplo de cómo sería cargar a partir de una tabla de países en Oracle una tabla de SQL Server y un archivo plano resumen.
Azure Data Factory (ADF) es un servicio de integración de datos serverless (totalmente administrado). Permite integrar visualmente más de 90 orígenes de datos. La interfaz web facilita el diseño de pipelines o tuberías que organizan una serie de tareas sobre los datos a través de actividades [6].
Data Factory se define como una herramienta mixta de datos, ya que permite aplicar estrategias de ETL y ELT para orquestar actividades. La estrategia ETL se aplica mayormente a proyectos del tipo Data Warehouse, mientras que la estrategia ELT, se suele aplicar a proyectos que requieren Data Lakes [7].
A continuación, presento un ejemplo de cómo a partir de un Excel de ventas, generamos un CSV con el resumen de rentabilidad y ventas por país.
Cloud Data Fusion es un servicio de integración de datos empresariales nativo de la nube y completamente administrado para compilar y administrar canalizaciones de datos con rapidez. La interfaz web de Cloud Data Fusion permite compilar soluciones de integración de datos escalables. Facilita conectarse a varias fuentes de datos, transformar los datos y, luego, transferirlos a varios sistemas de destino, sin tener que administrar la infraestructura.
Entre sus características tiene un autoservicio sin código, cuenta con la arquitectura nativa de Google Cloud, replica las bases de datos transaccionales y operativas, metadatos y linaje de datos integrados, y permite la integración de datos en entornos híbridos y multinube [8].
En esta imagen podemos ver la interfaz de la herramienta con un pipeline sencillo, donde se conecta la base de datos de origen, se transforman algunas columnas y se cargan los datos transformados a dos receptores - BigQuery y Cloud Storage.
A continuación, presento un ejemplo de cómo podemos consolidar dos archivos CSV en un único archivo de salida.
PL/SQL es un lenguaje de programación incrustado en Oracle, su principal característica es que extiende el lenguaje SQL estándar para poder disponer de nuevas características como lo son el manejo de variables, estructuras modulares, estructuras de control de flujo y control de excepciones entre otras [9].
Por su parte T-SQL es una extensión al lenguaje SQL para Microsoft y Sybase. Al igual que PL/SQL posee características de un lenguaje de programación, como por ejemplo contar con diferentes tipos de datos, definición de variables, estructuras de control de flujo, gestión de excepciones y funciones predefinidas entre otras.
Como podrá notar, este modo de desarrollo requiere que el usuario tenga conocimientos de SQL y programación.
En el siguiente ejemplo crearemos un bloque anónimo que cargará una tabla a partir del archivo Excel que hemos usado en los ejemplos previos. ¿Nota que requiere una mayor dedicación respecto a lograr lo mismo con una herramienta?
DECLARE @LinkServerExcel int
DECLARE @nombreConexion nvarchar(128)
DECLARE @tipoConexion nvarchar(128)
DECLARE @provider nvarchar(128)
DECLARE @versionExcel nvarchar(4000)
DECLARE @ubicacionExcel nvarchar(4000)
DECLARE @catalog nvarchar(128)
-- Asignar valores para la conexión
SET @nombreConexion = 'O_EXCEL' --O=ORIGEN
SET @tipoConexion = 'Excel'
SET @provider = 'Microsoft.ACE.OLEDB.12.0'
SET @ubicacionExcel = 'C:\Lituus\Paises.xlsx'
SET @versionExcel = 'Excel 12.0'
EXEC @LinkServerExcel = [master].[dbo].[sp_addlinkedserver] @nombreConexion, @tipoConexion, @provider,
@ubicacionExcel, @location, @versionExcel, @catalog
USE BDDESTINO; --NOMBRE DE LA BASE DE DATOS DONDE ESPERAMOS DEJAR LOS DATOS
GO
-- Cargamos el archivo excel a una tabla de paso STG
SELECT * INTO STG_PAISES
FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0; Database=C:\Lituus\Paises.xlsx', [Hoja1$]);
-- Ahora correspondería agregar el resto de lógica que necesitemos.
¿Qué pasaría con el código si necesitamos incorporar manejo de errores, detección de cambios en los metadatos o en las versiones de Excel o llevar un registro de las ejecuciones? Es posible, pero nuestro código se vuelve más complejo que al usar una herramienta.
Podemos apreciar mediante los ejemplos expuestos, una mayor facilidad de desarrollo en las herramientas ETL por sobre el desarrollo de código. Pero no nos quedemos solo en estos tipos de desarrollos, sino que pensemos en escenarios más complejos donde se requiere cargar múltiples tipos tablas (temporales, lookups, dimensiones, etc.), un modelo dimensional o un Data Lake. Se imagina las horas de desarrollo de esta proeza (solo considere la cantidad de líneas de código para 20 flujos de datos).
¿Qué sucede si un proceso debe ser ejecutado diariamente y usted necesita saber si se ejecutó de manera correcta? Para el caso de hand-code, como mínimo necesitaría el apoyo de tablas de auditoría. Estas no solo indicarían si el proceso se ejecutó de manera correcta, sino que en caso de error, nos informaría el tipo de error y en qué parte del flujo ocurrió. En este punto haremos una pausa, puesto que el manejo de errores es otra arista a tener en cuenta. En particular esto es una ventaja importante de las herramientas ETL sobre “hand-coding”, ya que facilita la trazabilidad de los errores (archivos log) y aumenta la rapidez con la que podemos detectarlos porque suelen marcar gráficamente el elemento que tiene problemas.
Finalmente, según mi experiencia y gustos personales, recomendaría el uso de herramientas gráficas. Por ejemplo Talend elimina las barreras de acceso puesto que no requiere comprar una licencia. Por su parte una herramienta pagada como SAP BODS tiene la ventaja de ser parte de una plataforma, es decir, no solo cuenta con la herramientas per se, sino que añaden: Consola de administración de procesos, manejo de archivos de log, auto documentación, Data Quality, paralelismo automático entre otras funcionalidades.
Nota: Si crees que este contenido puede ser útil para otras personas no dudes en compartirlo. Además te invitamos a seguirnos en Linkedin, Twitter, Facebook, Instagram y Youtube. Mientras en el Blog liberamos contenido más extenso, en las RRSS publicamos semanalmente tips relacionados con Data Warehouse, BI, Data Science y Visualización de Datos que es justamente lo que más nos apasiona hacer en Lituus.