Procesos ETL

Los procesos E.T.L (Extracción Transformación y Carga (Load)) son los procesos por los que se extraen y computan datos de fuentes muy diversas para cargarlos, normalmente en un DataWarehouse.

Diseño de los procesos ETL

A la hora de diseñar un proceso ETL es importante realizar previamente un buen diseño y ANÁLISIS DE LOS DATOS

Al igual que en todos los procesos relacionados con la informática. El análisis previo, y los sistemas de detección y gestión de errores son dos fases del desarrollo al las que no se les suele dar mucha importancia y SI QUE LA TIENEN.

Un buen análisis de los datos nos permitirá tener datos limpios, ordenados y cualificados. Esto se traduce en: CONTROLADOS

Una buena gestión de los errores nos permitirá saber rápidamente por que ha fallado el proceso ETL y como poder subsanar el error para poder reanudar el trabajo inmediatamente.

Diseño de los procesos

Un Proceso ETL puede constar de todas o algunas de estas partes:

  • Extracción de los datos: Para no afectar al sistema transaccional es conveniente extraer los datos que se van a computar y almacenarlos temporalmente en nuestra área de trabajo (Stagging area).
  • Transformación de los datos: Los datos que van a ser procesados necesitan una trasformación, como agregaciones, precalculos, etc. Estas trasformaciones es conveniente realizarlas durante el proceso ETL para dejar los datos listos tal y como van a ser insertados en unas tablas de entrega (Delivery Area) donde se realizarán las comprobaciones oportunas. Es en este proceso donde se crean las dimensiones y los hechos que se insertarán.
  • Diseño de dimensiones: Las dimensiones se deben computar previamente a los hechos y a ser posible deber surgir de un origen independiente. Quiero decir. Las dimensiones deben salir de una tabla de valores posibles. Por ejemplo en el caso de las ventas de una zapatería de la tabla de modelos de zapatos disponibles y no de la tabla de ventas efectivamente realizadas. De este modo tendremos también los zapatos que no vendemos.
  • Diseño de hechos: Una vez tenemos las dimensiones con todos los valores posibles ya podemos cumplimentar la tabla de hechos. Durante la carga de los hechos se deben contemplar 2 posibilidades
    • Carga Total: Carga inicial total de los datos.
    • Carga Incremental:Carga parcial de los datos nuevos desde la ultima carga.
  • Comprobación de los datos: Siempre se debe comprobar que los datos que se van a insertan son correctos. Igualmente también es conveniente tener previsto un proceso de rollback.
  • Inserción de los datos: Tras haber hecho todo el trabajo ya se pueden insertar los nuevos datos.

Diseño de las dimensiones

A la hora de crear una dimensión es importante tener algunos aspectos en cuenta para evitar problemas posteriores:

La clave primaria debería ser única

  • Comprobar que no hay duplicados en la tabla de origen:
select id_1, id_2, id_3, id_n, count(*)
from  tabla_origen
group by id_1, id_2, id_3, id_n
having  count(*) > 1
  • Si hay agrupaciones de códigos tratarlos independientemente. Evitar tener una tabla de dimensiones parecida a esta:
Clave_PrimariaDescripciónClave_origen
1pirimer grupo 10
1pirimer grupo 11
1pirimer grupo 12
1pirimer grupo 13
2segundo grupo 20
2segundo grupo 21
3tercer grupo 32
3tercer grupo 33

Si tienes una tabla de dimensión como esta tendrás problemas en el futuro.

Gestión de los errores y logs

La gestión de los errores es una de las tareas criticas durante un proceso ETL. Es bastante común que no se realice ninguna gestión de los errores y únicamente se disponga del log de ejecución para saber si todo ha funcionado correctamente o no. ESO NO ES SUFICIENTE.

  • Los logs se suelen perder o sobreescribir.
  • Los logs no son facilmente accesibles
  • Los logs no aportan mucha información
  • Los logs no proporcionan una buena historicidad (por todo lo anterior).

Es bueno tener una buena gestión de logs de ejecución así como es bueno tener una buena gestión de errores.

Una buena téncina es redirigir los logs de ejecución a una tabla que nos facilite después el acceso a datos como:

  • Fecha de ejecución
  • Tiempo de ejecución
  • Éxito o fracaso de la ejecución.
  • Parámetros de ejecución.
  • ETC.

Igualmente es bueno tener una tabla de errores donde registrar tanto los errores como sus causas. Hay varias téncinas para ello dependiendo de el modo en que realices tu proceso ETL (PL/SQL, Talend, Kettle, etc). Es aconsejable la redirecion del mensaje de error tanto como la linea que ha generado el error.

Estas dos tablas son muy útiles a la hora de analizar los procesos ETL comprobar el correcto funcionamiento y solucionar los posibles errores.

 
etl.txt · Última modificación: 2011/03/05 09:05 por juantxu
 
Excepto donde se indique lo contrario, el contenido de esta wiki se autoriza bajo la siguiente licencia:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki