Objetivo
Convertir un script en una herramienta operable.
Explicación
Un script de pipeline debe aceptar parámetros, registrar eventos y devolver exit code correcto. Usa transacciones o cargas por lotes y evita concatenar SQL con valores de usuario. Python se usa como pegamento para automatizar ingestas, validaciones y APIs. En producción importa tanto el resultado como la forma de fallar: timeouts, logs, códigos de salida, reintentos limitados y secretos fuera del código. Para trabajar Carga a DB, logging y CLI de forma profesional, no te quedes con el ejemplo: identifica la entrada, ejecuta el caso base, provoca al menos un caso incorrecto y compara el resultado con un control independiente. En este laboratorio el criterio de salida es concreto: Un operador puede saber qué pasó mirando logs y código de salida. La verificación principal será: La ejecución inválida devuelve non-zero; dry-run no modifica destino. Si no puedes explicar por qué pasa esa comprobación, vuelve al paso anterior antes de continuar.
Contexto profesional
Python se usa como pegamento para automatizar ingestas, validaciones y APIs. En producción importa tanto el resultado como la forma de fallar: timeouts, logs, códigos de salida, reintentos limitados y secretos fuera del código.
Ejemplo real
python ingest.py --input orders.csv --dry-run
# logs: INFO rows=100 invalid=2
Archivos o datos de entrada
- data/ecommerce_orders.csv
- python/ingest_validate.py
Práctica guiada
Añade –dry-run conceptual para validar sin cargar.
Laboratorio paso a paso
- Prepara el entorno y localiza los datos/archivos de entrada: data/ecommerce_orders.csv, python/ingest_validate.py. Antes de modificar nada, anota el número de filas, columnas u objetos que esperas usar.
- Reproduce el ejemplo real de la lección y guarda la salida. No avances hasta poder explicar qué hace cada bloque relacionado con «Carga a DB, logging y CLI».
- Ejecuta la práctica guiada: Añade –dry-run conceptual para validar sin cargar. Documenta el comando, consulta o acción exacta y el resultado obtenido.
- Resuelve el reto sin mirar la solución: Diseña logs para inicio, resumen y error, sin exponer PII innecesaria. Si falla, registra el mensaje de error y formula una hipótesis antes de cambiar código.
- Compara tu resultado con el criterio esperado: Un operador puede saber qué pasó mirando logs y código de salida. Después ejecuta la comprobación: La ejecución inválida devuelve non-zero; dry-run no modifica destino.
- Provoca deliberadamente un caso problemático relacionado con este error frecuente: Prints dispersos sin niveles/timestamps dificultan troubleshooting.. Comprueba que sabes detectarlo y corregirlo.
Reto sin ayuda
Diseña logs para inicio, resumen y error, sin exponer PII innecesaria.
Resultado esperado
Un operador puede saber qué pasó mirando logs y código de salida.
Cómo verificarlo
La ejecución inválida devuelve non-zero; dry-run no modifica destino.
Checklist de validación
- El resultado cumple: Un operador puede saber qué pasó mirando logs y código de salida.
- Has ejecutado esta verificación y puedes explicar el resultado: La ejecución inválida devuelve non-zero; dry-run no modifica destino.
- Has probado al menos un caso límite o dato inválido y el comportamiento es explícito, no silencioso.
- Puedes repetir la práctica desde cero sin copiar la solución y dejar evidencia (consulta, commit, captura o salida de consola).
Pista específica
Separa funciones read/validate/load/main.
Solución paso a paso
1) Empieza reproduciendo el caso base con los datos indicados. 2) Aplica esta estrategia específica: main coordina y cada función tiene una responsabilidad. 3) Usa como referencia técnica el ejemplo de la lección (python ingest.py –input orders.csv –dry-run # logs: INFO rows=100 invalid=2). 4) Ejecuta la verificación: La ejecución inválida devuelve non-zero; dry-run no modifica destino. 5) Compara con el resultado esperado: Un operador puede saber qué pasó mirando logs y código de salida. 6) Repite el reto cambiando un dato o condición para demostrar que entiendes el comportamiento y no has obtenido el resultado por casualidad. Si aparece el error «Prints dispersos sin niveles/timestamps dificultan troubleshooting.», corrige la causa antes de continuar; no ocultes el fallo ni cambies el resultado esperado para que la prueba pase.
Errores frecuentes
- Prints dispersos sin niveles/timestamps dificultan troubleshooting.
Qué debes recordar
Python en data engineering debe producir salidas reproducibles y fallar de forma visible ante datos inválidos.
Preguntas de entrevista
- ¿Qué errores reintentarías y cuáles harías fallar inmediatamente? Aplícalo concretamente a «Carga a DB, logging y CLI».
- ¿Cómo harías observable y reproducible este script? Explica qué evidencia enseñarías al revisor.
Siguiente paso
Aplicarás scripts en el proyecto ELT.
Recursos de esta lección
Preparando contenido…
Quiz de la lección
¿Qué modo permite validar sin escribir en destino?