Programar Dags

Introducción a Apache Airflow en Python

Mike Metzger

Data Engineer

Ejecuciones de Dag

  • Una instancia específica de un flujo de trabajo en un momento dado
  • Puede ejecutarse manualmente o vía schedule
  • Mantiene estado para cada flujo y sus tareas
    • running
    • failed
    • success
1 https://airflow.apache.org/docs/stable/scheduler.html
Introducción a Apache Airflow en Python

Vista de Dag Runs

Página de Dag Runs de Airflow listando ejecuciones recientes de todos los Dags

Introducción a Apache Airflow en Python

Estado de Dag Runs

Página de Dag Runs de Airflow mostrando la columna de estado de cada ejecución

Introducción a Apache Airflow en Python

Detalles de schedule

Al programar un Dag, hay varios atributos clave:

  • start_date - Fecha/hora inicial para programar la ejecución del Dag
  • end_date - Opcional; cuándo dejar de crear nuevas instancias del Dag
    • start_date y end_date usan un objeto datetime(year, month, day), por ejemplo:
       from pendulum import datetime
       start_date=datetime(2026, 4, 10, tz="UTC")
      
Introducción a Apache Airflow en Python

Schedule

schedule indica:

  • Con qué frecuencia se programa el Dag
  • Entre start_date y end_date
  • Se define con sintaxis cron, presets integrados o timedeltas.
Introducción a Apache Airflow en Python

Sintaxis cron

Diagrama de la sintaxis cron con sus cinco campos de tiempo separados por espacios

  • Formato cron de Unix
  • 5 campos separados por un espacio
  • * significa cada intervalo (p. ej., cada minuto, cada día)
  • Se permiten valores separados por comas en los campos
Introducción a Apache Airflow en Python

Ejemplos de cron

Diagrama de la sintaxis cron con sus cinco campos de tiempo separados por espacios

0 12 * * *              # Ejecutar a diario al mediodía
* * 25 2 *              # Ejecutar cada minuto el 25 de febrero
0,15,30,45 * * * *      # Ejecutar cada 15 minutos
Introducción a Apache Airflow en Python

Presets del programador de Airflow

Presets:

  • @hourly
  • @daily
  • @weekly
  • @monthly
  • @yearly

equivalente cron:

  • 0 * * * *
  • 0 0 * * *
  • 0 0 * * 0
  • 0 0 1 * *
  • 0 0 1 1 *
1 https://airflow.apache.org/docs/stable/scheduler.html
Introducción a Apache Airflow en Python

Presets especiales

Airflow tiene tres presets especiales de schedule:

  • None - No programar nunca; para Dags lanzados manualmente
  • @once - Programar solo una vez
  • @continuous - Ejecutar en cuanto termine la ejecución previa
Introducción a Apache Airflow en Python

timedelta

  • También puedes usar pendulum.duration
  • duration(hours=6)
  • duration(minutes=30)
from pendulum import duration

@dag(
  dag_id="example_dag"
  schedule=duration(days=2)
)
Introducción a Apache Airflow en Python

Aplicar schedules

  • El schedule se define en el Dag
  • Usa el parámetro schedule:
@dag(
  dag_id="example_dag",
  schedule="0 12 * * *"
)
@dag(
  dag_id="example_dag",
  schedule="@daily"     
)
Introducción a Apache Airflow en Python

Problemas de schedule

Al programar un Dag, Airflow:

  • Requiere que pase un intervalo completo tras start_date
  • Programa la tarea en start_date + schedule
'start_date': datetime(2026, 2, 25, tz="UTC")
'schedule': @daily

La primera ejecución posible es el 26 de febrero de 2026

Introducción a Apache Airflow en Python

¡Vamos a practicar!

Introducción a Apache Airflow en Python

Preparing Video For Download...