Curaduría open-source · Python-first · en español

El catálogo

Nº10 · Orquestación

Dagster

Orquestación de pipelines centrada en los datos (assets), no solo en tareas.

PlataformaIntermedioData Engineerpython

¿Qué es?

Dagster es un orquestador de pipelines de datos moderno y centrado en assets. En lugar de pensar solo en tareas que se ejecutan en orden, defines en Python los activos de datos que produces — una tabla, un modelo, un dataset — y sus dependencias. El grafo de ejecución se infiere de esas relaciones, y con él vienen tipos, tests y observabilidad de fábrica.

Ese giro (de "tareas" a "assets") es lo que lo diferencia de los orquestadores tradicionales: el sistema sabe qué dato produce cada paso, no solo que algo corrió.

¿Para qué sirve?

  • Modelar pipelines como un grafo de assets. Declaras cada activo y sus dependencias; Dagster construye el DAG y mantiene el linaje.
  • Desarrollo local + UI. Corres y depuras todo en tu máquina, y la interfaz web muestra el grafo, las ejecuciones y el estado de cada asset.
  • Integración con el stack. Conecta de forma natural con dbt, Spark, warehouses y fuentes de datos bajo un mismo grafo observable.
  • Schedules y sensores. Programa materializaciones por tiempo o dispáralas ante eventos.

¿Cuándo usarla / cuándo no?

Úsalo cuando quieras un orquestador data-aware con buena experiencia de desarrollo: pipelines con varias fuentes y dependencias entre tablas, testing local, linaje y observabilidad sin cablearlos a mano.

Piénsalo dos veces para:

  • Un solo cron simple (un script una vez al día): montar un orquestador es overkill — un cron basta.
  • Equipos ya invertidos en Airflow: frente a Airflow — más tradicional, task-centric y con un ecosistema enorme de operadores — la elección depende del equipo y del caso, no de cuál es "mejor" en abstracto.

Empieza en 1 minuto

Define un asset que produce datos y otro que lo consume — el corazón del modelo de Dagster.

pip install dagster
# pipeline.py
from dagster import asset

@asset
def ventas():
    # Activo de origen: produce los datos
    return [{"pais": "PE", "monto": 150}, {"pais": "CL", "monto": 80}]

@asset
def total_por_pais(ventas):
    # Activo downstream: depende de `ventas` por el nombre del parámetro
    totales = {}
    for fila in ventas:
        totales[fila["pais"]] = totales.get(fila["pais"], 0) + fila["monto"]
    return totales

Lanza la UI con dagster dev -f pipeline.py y abre http://localhost:3000: verás el grafo ventas → total_por_pais y podrás materializarlo con un clic.

Trivia rápida — pon a prueba lo que acabas de leer.

¿Qué tanto sabes de Dagster?

Documentación oficial

La fuente de verdad vive ahí. Acá orientamos; la profundidad la pones tú.

Abrir documentación oficial

Qué aprender después

Ver también

Nº10 · Actualizado 2026-06-26