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:
BashOperatorPythonOperatorDockerOperatorKubernetesPodOperator- operadores de proveedores cloud o bases de datos.
Dependencias
python
extract >> transform >> loadVarias ramas:
python
extract >> [validate, profile] >> loadIdempotencia
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.
