El Rincon del BI

Descubriendo el Business Intelligence…

11. Herramientas ETL. ¿Que son, para que valen?. Productos mas conocidos. ETL´s Open Source.

Posted by Roberto Espinosa en 29 diciembre 2009


En la publicación 3 de nuestro Blog, cuando hablabamos del DataWarehouse, pasamos por encima de las herramientas ETL, considerandolas un elemento fundamental en la construcción, explotación y evolución de nuestro DW.

Esquema Tipico de Herramienta ETL

Deciamos que las  herramientas de este tipo, deberían de proporcionar, de forma general,  las siguientes funcionalidades:

Control de la extracción de los datos y su automatización, disminuyendo el tiempo empleado en el descubrimiento de procesos no documentados, minimizando el margen de error y permitiendo mayor flexibilidad.

Acceso a diferentes tecnologías, haciendo un uso efectivo del hardware, software, datos y recursos humanos existentes.

Proporcionar la gestión integrada del Data Warehouse y los Data Marts existentes, integrando la extracción, transformación y carga para la construcción del Data Warehouse corporativo y de los Data Marts.

Uso de la arquitectura de metadatos, facilitando la definición de los objetos de negocio y las reglas de consolidación.

Acceso a una gran variedad de fuentes de datos diferentes.

Manejo de excepciones.

Planificación, logs, interfaces a schedulers de terceros, que nos permitiran llevan una gestión de la planificación de todos los procesos necesarios para la carga del DW.

Interfaz independiente de hardware.

Soporte en la explotación del Data Warehouse.

Es hora de ampliar las definiciones y entrar un poco mas a fondo en lo que son realmente las ETL´s:

________________________________________________________________________________________

Definición de ETL en la Wikipedia

Si ampliamos las definiciones, en la Wikipedia se dice lo siguiente de las herramientas ETL:

ETL son las siglas en inglés de Extraer, Transformar y Cargar (Extract, Transform and Load). Es el proceso que permite a las organizaciones mover datos desde múltiples fuentes, reformatearlos y limpiarlos, y cargarlos en otra base de datos, data mart, o data warehouse para analizar, o en otro sistema operacional para apoyar un proceso de negocio.

Los procesos ETL también se pueden utilizar para la integración con sistemas heredados (aplicaciones antiguas existentes en las organizaciones que se han de integrar con los nuevos aplicativos, por ejemplo, ERP´s. La tecnología utilizada en dichas aplicaciones puede hacer dificil la integración con los nuevos programas).

Extraer

La primera parte del proceso ETL consiste en extraer los datos desde los sistemas de origen. La mayoría de los proyectos de almacenamiento de datos fusionan datos provenientes de diferentes sistemas de origen. Cada sistema separado puede usar una organización diferente de los datos o formatos distintos. Los formatos de las fuentes normalmente se encuentran en bases de datos relacionales o ficheros planos, pero pueden incluir bases de datos no relacionales u otras estructuras diferentes. La extracción convierte los datos a un formato preparado para iniciar el proceso de transformación.

Una parte intrínseca del proceso de extracción es la de analizar los datos extraídos, de lo que resulta un chequeo que verifica si los datos cumplen la pauta o estructura que se esperaba. De no ser así los datos son rechazados.

Un requerimiento importante que se debe exigir a la tarea de extracción es que ésta cause un impacto mínimo en el sistema origen. Si los datos a extraer son muchos, el sistema de origen se podría ralentizar e incluso colapsar, provocando que éste no pueda utilizarse con normalidad para su uso cotidiano. Por esta razón, en sistemas grandes las operaciones de extracción suelen programarse en horarios o días donde este impacto sea nulo o mínimo.

Interfaz Grafico herramienta ETL

Transformar

La fase de transformación aplica una serie de reglas de negocio o funciones sobre los datos extraídos para convertirlos en datos que serán cargados. Algunas fuentes de datos requerirán alguna pequeña manipulación de los datos. No obstante en otros casos pueden ser necesarias aplicar algunas de las siguientes transformaciones:

  • Seleccionar sólo ciertas columnas para su carga (por ejemplo, que las columnas con valores nulos no se carguen).
  • Traducir códigos (por ejemplo, si la fuente almacena una “H” para Hombre y “M” para Mujer pero el destino tiene que guardar “1” para Hombre y “2” para Mujer).
  • Codificar valores libres (por ejemplo, convertir “Hombre” en “H” o “Sr” en “1”).
  • Obtener nuevos valores calculados (por ejemplo, total_venta = cantidad * precio).
  • Unir datos de múltiples fuentes (por ejemplo, búsquedas, combinaciones, etc.).
  • Calcular totales de múltiples filas de datos (por ejemplo, ventas totales de cada región).
  • Generación de campos clave en el destino.
  • Transponer o pivotar (girando múltiples columnas en filas o viceversa).
  • Dividir una columna en varias (por ejemplo, columna “Nombre: García, Miguel”; pasar a dos columnas “Nombre: Miguel” y “Apellido: García”).
  • La aplicación de cualquier forma, simple o compleja, de validación de datos, y la consiguiente aplicación de la acción que en cada caso se requiera:
    • Datos OK: Entregar datos a la siguiente etapa (Carga).
    • Datos erróneos: Ejecutar políticas de tratamiento de excepciones (por ejemplo, rechazar el registro completo, dar al campo erróneo un valor nulo o un valor centinela).

Interfaz Grafico de la herramienta ETL Kettle - Pentaho

Carga

La fase de carga es el momento en el cual los datos de la fase anterior (transformación) son cargados en el sistema de destino. Dependiendo de los requerimientos de la organización, este proceso puede abarcar una amplia variedad de acciones diferentes. En algunas bases de datos se sobrescribe la información antigua con nuevos datos. Los data warehouse mantienen un historial de los registros de manera que se pueda hacer una auditoría de los mismos y disponer de un rastro de toda la historia de un valor a lo largo del tiempo.

Existen dos formas básicas de desarrollar el proceso de carga:

  • Acumulación simple: La acumulación simple es la más sencilla y común, y consiste en realizar un resumen de todas las transacciones comprendidas en el período de tiempo seleccionado y transportar el resultado como una única transacción hacia el data warehouse, almacenando un valor calculado que consistirá típicamente en un sumatorio o un promedio de la magnitud considerada.
  • Rolling: El proceso de Rolling por su parte, se aplica en los casos en que se opta por mantener varios niveles de granularidad. Para ello se almacena información resumida a distintos niveles, correspondientes a distintas agrupaciones de la unidad de tiempo o diferentes niveles jerárquicos en alguna o varias de las dimensiones de la magnitud almacenada (por ejemplo, totales diarios, totales semanales, totales mensuales, etc.).

La fase de carga interactúa directamente con la base de datos de destino. Al realizar esta operación se aplicarán todas las restricciones y triggers (disparadores) que se hayan definido en ésta (por ejemplo, valores únicos, integridad referencial, campos obligatorios, rangos de valores). Estas restricciones y triggers (si están bien definidos) contribuyen a que se garantice la calidad de los datos en el proceso ETL, y deben ser tenidos en cuenta.

Procesamiento

Un desarrollo reciente en el software ETL es la aplicación de procesamiento paralelo. Esto ha permitido desarrollar una serie de métodos para mejorar el rendimiento general de los procesos ETL cuando se trata de grandes volúmenes de datos. Hay 3 tipos principales de paralelismos que se pueden implementar en las aplicaciones ETL:

  • De datos: Consiste en dividir un único archivo secuencial en pequeños archivos de datos para proporcionar acceso paralelo.
  • De segmentación (pipeline): Permitir el funcionamiento simultáneo de varios componentes en el mismo flujo de datos. Un ejemplo de ello sería buscar un valor en el registro número 1 a la vez que se suman dos campos en el registro número 2.
  • De componente: Consiste en el funcionamiento simultáneo de múltiples procesos en diferentes flujos de datos en el mismo puesto de trabajo.

Estos tres tipos de paralelismo no son excluyentes, sino que pueden ser combinados para realizar una misma operación ETL.

Una dificultad adicional es asegurar que los datos que se cargan sean relativamente consistentes. Las múltiples bases de datos de origen tienen diferentes ciclos de actualización (algunas pueden ser actualizadas cada pocos minutos, mientras que otras pueden tardar días o semanas). En un sistema de ETL será necesario que se puedan detener ciertos datos hasta que todas las fuentes estén sincronizadas. Del mismo modo, cuando un almacén de datos tiene que ser actualizado con los contenidos en un sistema de origen, es necesario establecer puntos de sincronización y de actualización.

Desafíos

Los procesos ETL pueden ser muy complejos. Un sistema ETL mal diseñado puede provocar importantes problemas operativos.

En un sistema operacional el rango de valores de los datos o la calidad de éstos pueden no coincidir con las expectativas de los diseñadores a la hora de especificarse las reglas de validación o transformación. Es recomendable realizar un examen completo de la validez de los datos (Data profiling) del sistema de origen durante el análisis para identificar las condiciones necesarias para que los datos puedan ser tratados adecuadamente por las reglas de transformación especificadas. Esto conducirá a una modificación de las reglas de validación implementadas en el proceso ETL.

Normalmente los data warehouse son alimentados de manera asíncrona desde distintas fuentes, que sirven a propósitos muy diferentes. El proceso ETL es clave para lograr que los datos extraídos asíncronamente de orígenes heterogéneos se integren finalmente en un entorno homogéneo.

La escalabilidad de un sistema de ETL durante su vida útil tiene que ser establecida durante el análisis. Esto incluye la comprensión de los volúmenes de datos que tendrán que ser procesados según los acuerdos de nivel de servicio (SLA: Service level agreement). El tiempo disponible para realizar la extracción de los sistemas de origen podría cambiar, lo que implicaría que la misma cantidad de datos tendría que ser procesada en menos tiempo. Algunos sistemas ETL son escalados para procesar varios terabytes de datos para actualizar un data warehouse que puede contener decenas de terabytes de datos. El aumento de los volúmenes de datos que pueden requerir estos sistemas pueden hacer que los lotes que se procesaban a diario pasen a procesarse en micro-lotes (varios al día) o incluso a la integración con colas de mensajes o a la captura de datos modificados (CDC: change data capture) en tiempo real para una transformación y actualización continua.

________________________________________________________________________________________

Algunas Herramientas ETL

Libres

Las herramientas ETL no se tienen porque utilizar solo en entornos de construcción de un DW, sino que pueden ser utiles para multitud de propositos, como por ejemplo:
  • Tareas de Bases de datos: También se utilizan para consolidar, migrar y sincronizar bases de datos operativas.
  • Migración de datos entre diferentes aplicaciones por cambios de versión o cambio de aplicativos.
  • Sincronización entre diferentes sistemas operacionales (por ejemplo, nuestro entorno ERP y la Web de ventas).
  • Consolidación de datos: sistemas con grandes volumenes de datos que son consolidades en sistemas paralelos para mantener historicos o para procesos de borrado en los sistemas originales.
  • Interfases de datos con sistemas externos: envio de información a clientes, proveedores. Recepción, proceso e integración de la información recibida.
  • Interfases con sistemas Frontoffice: interfases de subida/bajada con sistemas de venta.
  • Otros cometidos: Actualización de usuarios a sistemas paralelos, preparación de procesos masivos (mailings, newsletter), etc.

Para que nos hagamos una idea de las herramientas ETL mas importantes, podemos leer el informe Gartner, que es una comparativa de las productos mas importantes del mercado, posicionandolos en el según diferentes criterios, y hablando de las ventajas y puntos de riesgo de cada fabricante ( acceder al informe aquí, es necesario registrarse en la Web de Talend ).

Fuente: Gartner (November 2009)


Las características mas importantes que ha de incluir una herramienta ETL según Gartner son las siguientes:

  • Conectividad / capacidades de Adaptación (con soporte a origenes y destinos de datos): habilidad para conectar con un amplio rango de tipos de estructura de datos, que incluyen bases de datos relacionales y no relacionales, variados formatos de ficheros, XML, aplicaciones ERP, CRM o SCM, formatos de mensajes estandar (EDI, SWIFT o HL7), colas de mensajes, emails, websites, repositorios de contenido o herramientas de ofimatica.
  • Capacidades de entrega de datos: habilidad para proporcionar datos a otras aplicaciones, procesos o bases de datos en varias formas, con capacidades para programación de procesos batch, en tiempo real o mediante lanzamiento de eventos.
  • Capacidades de transformación de datos: habilidad para la transformación de los datos, desde transformaciones básicas (conversión de tipos, manipulación de cadenas o calculos simples), transformaciones intermedias (agregaciones, sumarizaciones, lookups) hasta transformaciones complejas como analisis de texto en formato libre o texto enriquecido.
  • Capacidades de Metadatos y Modelado de Datos: recuperación de los modelos de datos desde los origenes de datos o aplicaciones, creación y mantenimiento de modelos de datos, mapeo de modelo fisico a lógico, repositorio de metados abierto (con posiblidad de interactuar con otras herramientas), sincronización de los cambios en los metadatos en los distintos componentes de la herramienta, documentación, etc.
  • Capacidades de diseño y entorno de desarrollo: representación grafica de los objetos del repositorio, modelos de datos y flujos de datos, soporte para test y debugging, capacidades para trabajo en equipo, gestion de workflows de los procesos de desarrollo, etc.
  • Capacidades de gestión de datos (calidad de datos, perfiles y  minería).
  • Adaptación a las diferentes plataformas hardware y sistemas operativos existentes: Mainframes (IBM Z/OS), AS/400, HP Tandem, Unix, Wintel, Linux, Servidores Virtualizados, etc.
  • Las operaciones y capacidades de administración: habilidades para gestion, monitorización y control de los procesos de integración de datos, como gestión de errores, recolección de estadisticias de ejecución, controles de seguridad, etc.
  • La arquitectura y la integración: grado de compactación, consistencia e interoperabilidad de los diferentes componentes que forman la herramienta de integración de datos (con un deseable minimo número de productos, un unico repositorio, un entorno de desarrollo común, interoperabilidad con otras herramientas o via API), etc.
  • Capacidades SOA.

Observamos que en el informe del año 2009, se incluye por primera vez una herramienta ETL OpenSource, que es Talend. Tambien se habla de Pentaho, cuya herramienta Kettle, tambien es OpenSource. Ambas herramientas serán las que utilizemos en nuestro proyecto para la construcción de los procesos ETL.

Interfaz Grafico de la herramienta ETL Talend

A continuación indicamos algunos links interesantes sobre herramientas ETL:

Podeis echar un vistazo al directorio EOS de productos OpenSource para ver otros productos ETL Open, así como valoraciones de estos y casos reales de uso.

La elección de una herramienta ETL puede ser una tarea compleja que va a tener mucha repercusión en el desarrollo posterior de un proyecto. Podeis ver la comparativa de ETL´s OpenSource vs ETL´s Propietarias a continuación ( gracias a http://www.jonathanlevin.co.uk/). Aqui se habla de que las herramientas OpenSource ya estan empezando a ser una alternativa real a los productos existentes y se estan desarrollando con rapidez.

Igualmente, os dejo el link a un documento donde se habla de todo lo que tendremos que tener en cuenta a la hora de realizar la selección de una herramienta ETL (características que habrán de tener, criterios para la evaluación, etc). Acceder al documento aquí.

8 comentarios to “11. Herramientas ETL. ¿Que son, para que valen?. Productos mas conocidos. ETL´s Open Source.”

  1. Lucero Garcia said

    gracias por la informacion, muy interesante.

  2. argordmel said

    Excelente post!!!

    Muchas gracias por tu aporte!!!

  3. […] } En una entrada anterior del blog hicimos un repaso de las herramientas ETL, viendo cual era su cometido, las características que […]

  4. Fabian said

    Nos salvaste excelente post

  5. Mientras se tenga mas informacion… mas complejo y a la ves mas facil de seleccionar una herramienta (que ironico)

    Muy buen resumen estimado Roberto

  6. muchas gracias.

  7. Indeed, the content of this post is very interesting and it has an informative that is great. I really like your post because I really enjoyed reading your blog. And I have been talking about this subject a lot lately with my friend so hopefully this will get him to see my point of view with Data Integration.

  8. yair said

    Hola amigo, gracias por la información, pero como pasas el resultado de una consulta a una variable, para posteriormente ocupar esa variable como filtro de busqueda en otra consulta.
    Me lo podrias explicar por favor?

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 )

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 )

Google+ photo

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

Conectando a %s

 
A %d blogueros les gusta esto: