Migración de datos con técnicas de ETL: Extracción, Transformación y Carga de datos
ETL es una técnica que le permite al administrador de bases de datos (y también a los desarrolladores, programadores o implementadores de sistemas) realizar la migración de datos de una fuente original (o fuentes) hacia un destino; en dicha migración se pueden realizar transformaciones, fusiones, limpieza o estandarización de los datos. Actualmente existen diversas herramientas y técnicas desarrolladas para que estas tareas se hagan de la mejor manera posible. Si bien es una tarea que se lleva hasta el 50% de tiempo de procesamiento en un proyecto de business intelligence -por mencionar un tipo de proyecto donde se utiliza ampliamente el ETL- solo representa poco más del 2% del presupuesto de este tipo de proyectos.
ETL
ETL son las siglas de Extraction, Transformation, Load (Extracción, Transformación y Carga) de datos y conjunta a los procesos por el cual se genera una base de datos (o subconjunto de ella) por medio de la obtención de datos de diversas las fuentes originales (extracción), limpieza, estandarización o normalización (transformación) y creación de la estructura de datos adecuada (carga).
Usualmente el DBA realiza -o realizaba- esta actividad, la del ETL, con tareas manuales, migraciones a hojas de excel, uso de tablas temporales de una forma casi artesanal, sin herramientas, sin un orden y sin sistematizar el procedimiento. Si la migración de datos se hará una sola vez, de forma puntual o extraordinaria, entonces no hay problema, pero si esta tarea de pasar datos de un origen a un destino (y sobre todo, cuando se realizan transformaciones en el camino) es recomendable que el DBA se plantee la necesaria de hacer un ETL en forma, utilizando herramientas adecuadas, planeando el proceso, y sistematizando lo más que se pueda hacer para automatizar el proceso. Esto requiere tiempo, pero será tiempo que se invertirá una sola vez y que el ahorro futuro será fundamental para seguir haciendo sus tareas de administración de bases de datos.
Como lo indica en sus siglas, el proceso de ETL consiste en 3 grandes rubros principales:
Extracción.
Consiste en la extracción de datos de las fuentes originales. Estas fuentes pueden ser tan diversas como bases de datos (no todas del mismo motor, edición, versión o servidor) donde están algunos datos-; pueden estar en formatos estructurados como hojas de cálculo, archivos planos, separados por coma, en formato XML, JSON, etc. Lo importante de esta fase es que no todos los datos a migrar estarán necesariamente en el mismo formato o en el mismo servidor, pueden -y regularmente lo son- estar en diversas fuentes. Si no se tuvieran herramientas para programar procesos ETL entonces estas tareas tendrían que pasar por una fase de cargar todos los datos a un mismo formato (tablas temporales, por ejemplo) para poder ser utilizadas enla siguiente fase.
Obviamente, este fase del proceso requiere que la herramienta de ETL cuente con los permisos y con la visibilidad a las fuentes originales, por lo que es una tarea que regulamente recae en los administradores de bases de datos o DBAs.
En esta primera etapa es importante hacerse algunas preguntas para poder iniciar implementación del ETL
- ¿Se tiene la información disponible?
- ¿Requiere algún procedimiento administrativo?
- ¿Hay convenios con los proveedores externos?
- ¿Se tienen los permisos –técnicos y legales- para acceder a los datos de origen?
- ¿Se cuenta con la infraestructura necesaria?
En el diseño conceptual de esta etapa es necesario determinar algunos puntos importantes:
- Detectar datos y su fuente de original .
- Definir la periodicidad de extracción.
- Medir la calidad de datos y definir las transformaciones necesarias.
- Determinar del método más eficiente y seguro de extraer cada dato.
- Implementar métodos de extracción y llenado del Data Staging (preliminar, temporal, de prueba).
Transformación
Una vez extraidos todos los datos de las fuentes originales, se deberán realizar todas aquellas actividades que «limpien» los datos y los transformen a un formato y estructura deseados. En esta fase se realizarán algunas actividades como:
- Definición de los métodos de limpieza, unión, división, mezcla, normalización, estandarización o complemento que se aplicarán a los datos.
- Cambio de tipos de dato.
- Implementación de los métodos antes definidos (durante el proceso de extracción o en el área de Staging).
- Medición de la calidad de los datos.
- Todas estas transformaciones se realizarán en el área de Staging, y aún no se cargan el destino final.
Carga
Es la última parte de un proceso de ETL, e incluye básicamente 3 etapas:
- Construcción de la estructura final. Considerar que el acceso debe ser rápido y eficiente; casi siempre en modelos altamente desnormalizados si es para un proyecto de BI.
- Llenado de la estructura final de datos desde el área de Staging.
- Pruebas integrales.
- Medición de la calidad y eficiencia del proceso completo.
- Programación o calendarización para liberar el proceso ETL
Herramientas de ETL
Si bien todas las tareas de un proceso ETL se pueden hacer por separado (utilizando rutinas de carga de datos, tablas temporales, query’s ad hoc, etc.) lo recomendable es utilizar herramientas especializadas que facilitan la construcción del proceso de ETL. Algunos ejemplos de estas herramientas que permiten hacer todo el proceso ETL o que auxilian en algunas partes son:
- SQL Server con su Integration services.
- Kettle en la suite de Pentaho.
- Open refine (antes Google Refine).
Cuál usar depende de si se quiere, o puede, utilizar herramientas propietarios o de pago, o se quiere optar con herramientas open source.