dbt

Nível médio

Como sei o que quebra downstream antes de mudar um modelo do dbt?

O grafo de linhagem já existe no manifest.json de cada execução do dbt. A questão é se você checa ele antes de uma mudança ir pro ar, ou descobre por um dashboard quebrado depois.

Ler em:
Sem checagem de linhagem dbt ls pre-merge + exposures
Aproximadamente quanto do impacto downstream real cada passo revela - não é um benchmark medido.

Uma coluna renomeada ou um modelo removido parecem seguros no diff de um PR se nada downstream referencia visivelmente aquilo no mesmo arquivo - isso não diz nada sobre o que realmente consome aquilo três modelos adiante.

O grafo de linhagem já existe - você provavelmente não está lendo ele

Toda execução do dbt produz o manifest.json, que codifica completamente o grafo de dependências do projeto - as fontes upstream e os consumidores downstream de cada modelo, já calculados. dbt ls --select +my_model+ lista tudo que é upstream e downstream de um modelo dado direto desse grafo, sem abrir o dbt docs nem rastrear a estrutura de pastas na mão.

# + dos dois lados: tudo upstream e downstream desse modelo dbt ls --select +my_model+

Exposures transformam "downstream" em algo concreto

Uma entrada em exposures.yml liga um modelo a um consumidor real fora do próprio DAG do dbt - um dashboard, uma sincronização reverse-ETL, um relatório que alguém realmente olha. Sem exposures, "nada depende desse modelo" só significa que nada dentro do dbt depende dele, o que é uma afirmação mais fraca e muitas vezes enganosa se o consumidor real é uma ferramenta de BI que o dbt não enxerga.

Fazer isso antes de uma mudança que quebra algo, não depois

Rodar dbt ls --select +model_name contra o seletor de um modelo alterado como checagem de CI pre-merge pega o caso onde uma renomeação ou uma coluna removida quebra três marts downstream antes do PR ser mesclado - não depois que alguém percebe dias depois que um dashboard está silenciosamente errado.

Veja como isso fica no seu próprio pipeline.

Envie um event log real do Spark, um run_results.json do dbt ou uma exportação de métricas do Flink e receba recomendações concretas, para aprovar antes de aplicar - não mais uma regra geral.