Skill: etl-pipelines
Pipelines ETL. Que los datos fluyan solos y no se rompan los viernes.
Trigger
- Necesitás procesar archivos regularmente (diario, semanal)
- Los datos vienen de múltiples fuentes y hay que unificarlos
- Querés automatizar transformaciones que hoy hacés a mano
- El proceso manual ya no escala
Workflow LEND
1. ANALIZAR
├── Fuentes: ¿archivos, APIs, DBs, web scraping?
├── Frecuencia: one-shot, diaria, tiempo real
├── Volumen: ¿MB, GB? ¿crece con el tiempo?
└── Destino: ¿DB, data lake, CSV, dashboard?
2. OFRECER (Menú del Senior)
├── A) Script Python simple — Pandas pipeline, schedule con cron
├── B) Pipeline modular — extract + transform + load como funciones separadas
└── C) Orquestación — Prefect / Dagster con monitoreo, retries, logging
3. ELEGIR → confirmación
4. HACER
├── Extraer: leer de fuente (CSV, API, DB), validar que llegaron datos
├── Transformar: limpiar, tipar, unificar, calcular
├── Cargar: escribir a destino (DB, archivo, API)
├── Logging: cada etapa loguea filas procesadas, errores, duración
├── Error handling: try/except con reintentos y notificación
└── Schedule: cron para scripts, scheduler para orquestadores
5. VERIFICAR
├── El pipeline corre de principio a fin sin errores
├── Los datos cargados coinciden con los datos fuente (mismo count)
└── Si falla, el error es claro y hay un mecanismo de alerta
Patrones
- ETL vs ELT: ETL si transformás antes de cargar. ELT si cargás crudo y transformás en destino.
- Pipeline idempotente: correrlo dos veces da el mismo resultado (upsert, no insert duplicado)
- Logging: cada etapa registra: qué entró, qué salió, cuánto tardó, errores
- Incremental: procesar solo lo nuevo en vez de todo siempre
- Checkpoint: guardar el estado para poder retomar desde donde falló
Anti-patrones
- ❌ Pipeline no idempotente — correrlo dos veces duplica datos
- ❌ Sin logging — cuando falla no sabés en qué paso
- ❌ Todo en un solo script de 500 líneas — partí en etapas
- ❌ Sin manejo de errores — un timeout de API mata todo el pipeline
- ❌ Procesar todo siempre — si solo cambiaron 10 filas, no proceses 10M
1---2name: etl-pipelines3description: Construye pipelines ETL/ELT con Pandas: extracción, transformación y carga de datos con logging, manejo de errores, idempotencia y opciones de orquestación.4license: MIT5---67# Skill: etl-pipelines89Pipelines ETL. Que los datos fluyan solos y no se rompan los viernes.1011## Trigger1213- Necesitás procesar archivos regularmente (diario, semanal)14- Los datos vienen de múltiples fuentes y hay que unificarlos15- Querés automatizar transformaciones que hoy hacés a mano16- El proceso manual ya no escala1718## Workflow LEND1920```211. ANALIZAR22 ├── Fuentes: ¿archivos, APIs, DBs, web scraping?23 ├── Frecuencia: one-shot, diaria, tiempo real24 ├── Volumen: ¿MB, GB? ¿crece con el tiempo?25 └── Destino: ¿DB, data lake, CSV, dashboard?26272. OFRECER (Menú del Senior)28 ├── A) Script Python simple — Pandas pipeline, schedule con cron29 ├── B) Pipeline modular — extract + transform + load como funciones separadas30 └── C) Orquestación — Prefect / Dagster con monitoreo, retries, logging31323. ELEGIR → confirmación33344. HACER35 ├── Extraer: leer de fuente (CSV, API, DB), validar que llegaron datos36 ├── Transformar: limpiar, tipar, unificar, calcular37 ├── Cargar: escribir a destino (DB, archivo, API)38 ├── Logging: cada etapa loguea filas procesadas, errores, duración39 ├── Error handling: try/except con reintentos y notificación40 └── Schedule: cron para scripts, scheduler para orquestadores41425. VERIFICAR43 ├── El pipeline corre de principio a fin sin errores44 ├── Los datos cargados coinciden con los datos fuente (mismo count)45 └── Si falla, el error es claro y hay un mecanismo de alerta46```4748## Patrones4950- **ETL vs ELT**: ETL si transformás antes de cargar. ELT si cargás crudo y transformás en destino.51- **Pipeline idempotente**: correrlo dos veces da el mismo resultado (upsert, no insert duplicado)52- **Logging**: cada etapa registra: qué entró, qué salió, cuánto tardó, errores53- **Incremental**: procesar solo lo nuevo en vez de todo siempre54- **Checkpoint**: guardar el estado para poder retomar desde donde falló5556## Anti-patrones5758- ❌ Pipeline no idempotente — correrlo dos veces duplica datos59- ❌ Sin logging — cuando falla no sabés en qué paso60- ❌ Todo en un solo script de 500 líneas — partí en etapas61- ❌ Sin manejo de errores — un timeout de API mata todo el pipeline62- ❌ Procesar todo siempre — si solo cambiaron 10 filas, no proceses 10M