Construyendo un DAG Realista
Vamos a diseñar un DAG que represente un flujo de trabajo de ELT común:
- Tarea 1: Iniciar un pipeline de Dataflow (`DataflowOperator`). Este pipeline lee datos de una fuente externa y los carga en una tabla "raw" en BigQuery.
- Tarea 2: Ejecutar una transformación SQL (`BigQueryInsertJobOperator`). Esta tarea se ejecuta después de que el pipeline de Dataflow termine con éxito. Lee de la tabla "raw", aplica lógica de negocio (limpieza, enriquecimiento) y materializa el resultado en una tabla de "análisis".
- Tarea 3: Realizar una comprobación de calidad (`BigQueryCheckOperator`). Después de la transformación, esta tarea verifica que los datos en la tabla de análisis cumplen ciertas condiciones (ej. no hay nulos en columnas clave, no hay valores duplicados).
- Tarea 4: Tarea final. Si todas las comprobaciones son correctas, el pipeline finaliza con éxito. Si alguna falla, la tarea se marca como fallida, y Airflow puede enviar una alerta.
En nuestro script DAG de Python, definiremos estas cuatro tareas y estableceremos las dependencias de la siguiente manera: Tarea 1 >> Tarea 2 >> Tarea 3 >> Tarea 4. La sintaxis de Airflow (`>>` y `<<`) hace que definir estas cadenas de dependencias sea muy intuitivo.
Manejando Fallos y Reintentos
Una de las mayores ventajas de un orquestador es su capacidad para gestionar fallos. En la definición de un DAG, podemos configurar parámetros como:
- `retries`: El número de veces que Airflow intentará re-ejecutar una tarea si falla.
- `retry_delay`: El tiempo que esperará entre reintentos.
- `on_failure_callback`: Una función que se ejecutará si una tarea falla definitivamente (ej. para enviar una alerta a Slack o por correo electrónico).
Conclusión: El Director de la Orquesta de Datos
Cloud Composer y Apache Airflow transforman una colección de scripts y jobs aislados en un sistema de datos coherente, robusto y automatizado. Dominar la creación de DAGs, el uso de operadores y la configuración de dependencias es lo que te permite pasar de simplemente "ejecutar código" a "construir y gestionar arquitecturas de datos de producción". Es la habilidad que garantiza que tus pipelines se ejecuten de manera fiable, predecible y mantenible día tras día.