Skip to content

DAGs, tareas y operadores

Un DAG describe dependencias. Una task ejecuta una unidad de trabajo. Un operator define que tipo de trabajo se hace.

DAG

python
from datetime import datetime
from airflow import DAG

with DAG(
    dag_id="daily_sales",
    start_date=datetime(2026, 1, 1),
    schedule="@daily",
    catchup=False,
    tags=["sales"],
) as dag:
    ...

El DAG debe ser declarativo: definir estructura, no ejecutar trabajo pesado al importarse.

TaskFlow API

python
from airflow.decorators import dag, task

@dag(schedule="@daily", start_date=datetime(2026, 1, 1), catchup=False)
def sales_pipeline():
    @task
    def extract():
        return {"rows": 100}

    @task
    def transform(payload):
        return payload["rows"] * 2

    transform(extract())

sales_pipeline()

Operadores clasicos

Ejemplos:

  • BashOperator
  • PythonOperator
  • DockerOperator
  • KubernetesPodOperator
  • operadores de proveedores cloud o bases de datos.

Dependencias

python
extract >> transform >> load

Varias ramas:

python
extract >> [validate, profile] >> load

Idempotencia

Una tarea debe poder reintentarse sin romper datos.

Ejemplos:

  • Escribir particion por fecha reemplazable.
  • Usar upsert.
  • Marcar ejecuciones con logical_date.
  • Evitar nombres de archivos aleatorios sin control.

Buenas practicas

  • Tareas pequenas y observables.
  • Dependencias explicitas.
  • Nada pesado en parseo del DAG.
  • Parametros por fecha de ejecucion.
  • Reintentos y timeouts.
  • Logs claros por task.