# ETL

> Sacar datos de sus fuentes, limpiarlos y cargarlos donde se puedan analizar.

- Nivel: Intermedio
- Temas: Datos
- URL: https://tidbit.legios.com.ar/es/etl/
- En inglés: [ETL](https://tidbit.legios.com.ar/etl/)

**ETL** viene de extract, transform, load (extraer, transformar y cargar): los tres pasos para llevar datos desde los sistemas donde nacen hasta el lugar donde se analizan. **Extraer** es leerlos de las fuentes: la base de la app, un CRM, la API del proveedor de pagos, planillas. **Transformar** es limpiarlos y darles forma. **Cargar** es escribir el resultado en un data warehouse o un data lake.

En la transformación se esconde la mayor parte del trabajo. Las fechas vienen en tres formatos, el mismo cliente aparece como 'ANA PÉREZ' en un sistema y 'Ana Perez' en otro, los precios están en distintas monedas, algunas filas están duplicadas y a otras les falta un campo. El pipeline arregla todo eso de la misma forma cada vez, para que los números del tablero sean confiables y se puedan comparar mes a mes.

Los pipelines corren con un horario (todas las noches, cada hora) o de forma continua, y cuando uno se rompe se nota en un tablero que deja de actualizarse sin avisar. Muchos equipos hoy invierten el orden y hacen **ELT**: primero cargan los datos crudos y después los transforman adentro del warehouse con SQL, algo que tiene sentido ahora que los warehouses son potentes y guardar es barato. Herramientas como AWS Glue, Apache Airflow, dbt y Fivetran existen para armar, programar y monitorear estos pipelines.

## Una analogía

La cocina de preparación de un restaurante. Los ingredientes llegan de distintos proveedores (extraer), todas las mañanas se lavan, pelan y cortan de la misma forma (transformar) y van a recipientes etiquetados en la línea (cargar), así los cocineros nunca se cruzan con una papa llena de tierra.

## Para quedarse

- Extraer de las fuentes, transformar (limpiar, unir, estandarizar) y cargar en el destino.
- La mayor parte del esfuerzo, y de los errores, está en la transformación.
- ELT carga primero los datos crudos y los transforma adentro del warehouse.
- Los pipelines corren con horario o de forma continua, y hay que monitorearlos para saber cuándo se rompen.

## Para seguir leyendo

- [¿Qué es ETL? (AWS)](https://aws.amazon.com/es/what-is/etl/)
- [Extract, transform and load en Wikipedia](https://es.wikipedia.org/wiki/Extract,_transform_and_load)

## Términos relacionados

- [API](https://tidbit.legios.com.ar/es/api/): El menú de cosas que un programa le deja pedir a otro programa.
- [Planilla vs base de datos](https://tidbit.legios.com.ar/es/spreadsheet-vs-database/): Por qué una empresa que vive en Excel termina necesitando una base de datos de verdad.
- [Data warehouse](https://tidbit.legios.com.ar/es/data-warehouse/): Una base hecha para analizar: años de historia, de muchas fuentes, en un solo lugar.
- [Data lake](https://tidbit.legios.com.ar/es/data-lake/): Almacenamiento barato donde todos los datos se guardan como archivos crudos.
- [SQL](https://tidbit.legios.com.ar/es/sql/): El lenguaje para hacerle preguntas a una base de datos.
- [AWS Glue](https://tidbit.legios.com.ar/es/aws-glue/): El servicio de AWS para encontrar, describir y limpiar datos, sin servidores que correr.
- [dbt](https://tidbit.legios.com.ar/es/dbt/): Una herramienta para escribir transformaciones de datos en SQL, con tests, como software.
