dbt

Nivel medio

¿Cómo sé qué se rompe downstream antes de cambiar un modelo de dbt?

El grafo de linaje ya existe en el manifest.json de cada ejecución de dbt. La pregunta es si lo revisa antes de que un cambio salga, o se entera por un dashboard roto después.

Leer en:
Sin chequeo de linaje dbt ls pre-merge + exposures
Aproximadamente cuánto del impacto downstream real revela cada paso - no un benchmark medido.

Una columna renombrada o un modelo eliminado se ven seguros en el diff de un PR si nada downstream lo referencia visiblemente en el mismo archivo - eso no dice nada sobre qué lo consume realmente tres modelos más allá.

El grafo de linaje ya existe - probablemente no lo está leyendo

Cada ejecución de dbt produce manifest.json, que codifica por completo el grafo de dependencias del proyecto - las fuentes upstream y los consumidores downstream de cada modelo, ya calculados. dbt ls --select +my_model+ lista todo lo upstream y downstream de un modelo dado directamente desde ese grafo, sin abrir dbt docs ni rastrear la estructura de carpetas a mano.

# + en ambos lados: todo upstream y downstream de este modelo dbt ls --select +my_model+

Las exposures convierten "downstream" en algo concreto

Una entrada en exposures.yml liga un modelo a un consumidor real fuera del propio DAG de dbt - un dashboard, una sincronización reverse-ETL, un reporte que alguien realmente mira. Sin exposures, "nada depende de este modelo" solo significa que nada dentro de dbt depende de él, lo cual es una afirmación más débil y a menudo engañosa si el consumidor real es una herramienta de BI que dbt no puede ver.

Hacer esto antes de un cambio disruptivo, no después

Correr dbt ls --select +model_name contra el selector de un modelo modificado como chequeo de CI pre-merge detecta el caso donde un renombrado o una columna eliminada rompe tres marts downstream antes de que el PR se fusione - no después de que alguien note días más tarde que un dashboard está silenciosamente mal.

Vea cómo se ve esto en su propio pipeline.

Suba un event log real de Spark, un run_results.json de dbt o una exportación de métricas de Flink y obtenga recomendaciones concretas, que debe aprobar antes de aplicar - no otra regla general.