dbt exposures are YAML objects that document and track downstream assets—like dashboards, notebooks, or applications—that rely on dbt-produced datasets.
dbt exposures are YAML declarations that formally link a downstream consumer—dashboard, report, notebook, or application—to the dbt models it queries. They extend dbt’s lineage graph beyond the warehouse, giving teams visibility into who uses each dataset and why.
Exposures surface the business impact of models, enable proactive impact analysis, and close the loop between data producers and consumers.With them, you can answer “Who breaks if this model changes?” in seconds.
Create an exposures:
block in any .yml
file inside models/
. Supply required keys—name
, type
, maturity
, owner
, and depends_on
.dbt merges all files at compile time.
Minimum metadata: unique name
, human-readable label
, type
(dashboard, analysis, notebook, application), maturity
(low→high), owner
(email or Slack handle), and depends_on
list of model refs.
dbt docs renders exposures as green nodes connected to upstream models, making it obvious which transformations power each dashboard.Impact analysis, stale asset detection, and governance audits become trivial.
Popular scenarios include Looker dashboards, Mode reports, Hex notebooks, ML serving tables, reverse-ETL syncs, and product features that read from the warehouse.
Automate creation during BI deploys or enforce code-review checklists.Many teams gate dashboard merges on the presence of a matching exposure file.
Use consistent naming, tie exposures to version control, set maturity
honestly, and add tags like area:billing
for ownership.Review exposures during model deprecation to avoid orphaned dashboards.
Galaxy’s AI copilot autocompletes exposure YAML, suggests depends_on
based on your SQL, and lets you preview lineage graphs directly in the SQL editor, accelerating adoption without leaving your IDE.
exposures:
- name: executive_finance_dashboard
label: Executive Finance Dashboard
type: dashboard
maturity: high
url: https://looker.mycorp.com/dashboards/123
owner:
name: Dana Data
email: data@mycorp.com
depends_on:
- ref('fct_revenue')
- ref('dim_date')
If fct_revenue
model fails, dbt Cloud’s Slack alert mentions the dependent exposure.Finance knows the dashboard is stale and engineers can prioritize the fix.
dbt stores exposures in the manifest JSON, allowing programmatic access. For instance, run jq '.exposures[] | .name'
on manifest.json
to list all exposures.
.
Exposures connect data production with consumption, revealing business impact. They power smarter impact analysis, governance, and stakeholder communication, ensuring model changes never blindside end users.
No. Exposures are metadata only; they don't impact compilation or execution time.
Yes. Many teams script Looker API calls to emit YAML or use Galaxy’s AI copilot to draft exposures from SQL context.
Sources describe raw data coming into the warehouse; exposures describe assets leaving it. Together, they bookend the lineage graph.
Galaxy overlays exposure nodes on its lineage graph preview, letting you trace a dashboard back to raw sources without switching tools.