viernes, 15 de octubre de 2021

ETL, ELT y Data Virtualization

ETL es un término con los siglas de las palabras en inglés Extract, Transform and Load.
ETL, como su nombre sugiere, se utiliza para categorizar a aquellos procesos que extraen información de alguna  fuente, la transforman y la depositan en un destino final para su uso posterior.
Estos procesos son cotidianos en todas las empresas, ya que siempre hay necesidad de hacer modificaciones a alguna información para depositarla en algún repositorio, por lo general un Data Warehouse.

Con el advenimiento y popularizacion del Big Data y la información en la Nube (Cloud), se hizo necesario utilizar otro tipo de proceso, similar al anterior, denominado ELT : Extract, Load and Transform.
En este caso la información se extrae de una fuente, se carga en la Nube y luego se transforma para hacerla disponible.
Este cambio en los subprocesos Load/Transform se debe a que cuando estamos trabajando con Big Data necesitamos utilizar herramientas adecuadas para un volumen muy grande de información, y estas herramientas, en general, solo están disponibles en la Nube.

Relativamente hace poco tambien está disponible otro tipo de proceso que no requiere "mover/copiar" la información: Data Virtualization, denominada también Virtual ETL. De forma breve y sencilla, la virtualización consiste en crear "vistas" a la información en sus fuentes originales sin necesidad de copiarla o moverla. Estas vistas pueden ser de información alojada en la Nube o en servidores locales (on premise).
Hay quien dice que no se puede comparar Data Virtualization con ETL/ELT, lo cual en cierta manera es correcto, sin embargo hay situaciones en las que la virtualización de datos puede utilizarse en lugar de ETL/ELT

En el caso de ETL/ELT hay disponibles una gran cantidad de herramientas  ( muchas de ellas open source ), como Pentahoo, Talend, Informatica, Nifi, Data Factory de Azure, Glue de AWS,etc.
En el caso de Data Virtualization tenemos: Denodo, Tibco, etc

Además de las herramientas  antes mencionadas, también existen librerías/módulos para diferentes lenguajes como python, java, julia, etc.
En el caso de python, un módulo ligero y con muchas funcionalidades es petl

Voy a presentar un proyecto ETL muy sencillo utilizando el módulo petl de python.

El objetivo es cargar en un tabla de un base de datos MySQL el resumen de ventas de una empresa a partir de información disponible en varios archivos csv y xlsx.
Para ello vamos a utilizar SQLite como puente para las fases Extract y Transform del proceso ETL.

A continuación el script en python:

En la siguiente imagen podemos ver la estructura de la BBDD SQLite que se crea:

En la siguiente imagen podemos ver el resultado de una consulta a la tabla creada en MySQL:


 

No hay comentarios:

Publicar un comentario