dbt

Mid-level

How do I know what breaks downstream before I change a dbt model?

The lineage graph already exists in every dbt run's manifest.json. The question is whether you're checking it before a change ships, or finding out from a broken dashboard after.

Read in:
No lineage check dbt ls pre-merge + exposures
Roughly how much of the real downstream impact each step actually surfaces - not a measured benchmark.

A renamed column or a dropped model looks safe in a PR diff if nothing downstream is visibly referencing it in the same file - which tells you nothing about what actually consumes it three models away.

The lineage graph already exists - you're probably not reading it

Every dbt run produces manifest.json, which fully encodes the project's dependency graph - every model's upstream sources and downstream consumers, already computed. dbt ls --select +my_model+ lists every upstream and downstream model for a given one directly from that graph, without opening dbt docs or tracing folder structure by hand.

# + on both sides: everything upstream and downstream of this model dbt ls --select +my_model+

Exposures turn "downstream" into something concrete

An exposures.yml entry ties a model to an actual consumer outside dbt's own DAG - a dashboard, a reverse-ETL sync, a report someone actually looks at. Without exposures, "nothing depends on this model" only means nothing inside dbt depends on it, which is a weaker and often misleading claim if the real consumer is a BI tool dbt has no visibility into.

Doing this before a breaking change, not after

Running dbt ls --select +model_name against a changed model's selector as a pre-merge CI check catches the case where a rename or a dropped column breaks three downstream marts before the PR merges - not after someone notices a dashboard is quietly wrong days later.

See what this looks like on your own pipeline.

Upload a real Spark event log, dbt run_results.json, or Flink metrics export and get concrete, approve-before-apply recommendations back - not another rule of thumb.