All you need to know about dbt's Exposures
Adding and configuring Exposures in our project.
Part of the “Mastering dbt” series. Access to the full Study Guide. Let’s connect on LinkedIn!
Notes from the Exposure and Exposure properties documentation.
After learning about Seeds and Snapshots, the final resource we will analyse in this Checkpoint is Exposures.
Exposures is a metadata object that defines and describes the downstream use of your project. They are used to represent and document external resources like dashboards, reports, machine learning models, and APIs.

There are 3 main purposes for this:
End-to-end visibility: understanding what resources are using your dbt project so you know the impact of altering a model.
Documentation: show external assets in the dbt documentation.
Governance: help track ownership and accountability for data assets.
How to declare Exposures
Exposures can be defined manually with a .yml file or created automatically for supported integrations.
Declaring an Exposure
Exposures are declared under the “exposures:” key in a .yml file nested under models.

Exposure properties
Required properties:
name: a unique name for the exposure in snake case (replacing spaces by _)
type: it can be dashboard, notebook, analysis, ml, or application. For documentation purposes.
owner: name or email required. Additional properties
nameoremailrequired; additional properties allowed
Recommended properties:
depends_on: defines the metric, ref, or source (although it is highly unlikely to have an exposure linked to a source) that the exposure depends on.
Optional properties:
label: allows for a more human-friendly name than the “name” property, which doesn’t allow spaces.
url: the link to the data asset used to populate the “View this exposure” button in the upper right corner of the documentation site.
maturity: it can be “high”, “medium”, or “low” and refers to the level of confidence in the asset.
enabled: if set to False, dbt does not consider this resource part of the project. Can also be set in the dbt_project.yml file.
description: sets descriptions for documentation purposes.
tags: add common tags to resources to apply commands to all in one go using the “tag:” method.
meta: adds custom metadata for the resource to the manifest.json file and documentation.
Running commands with exposures
As Exposures are metadata objects, you cannot run or build them. To have them included in the documentation, just run “dbt docs generate” and the exposures will appear in the documentation.
Besides, you can use the “exposures:” method to run or test all the upstream models that the Exposure depends on.


Thanks for writing this, it clarifys a lot. It's kinda like mapping out all the dependancies in an AI pipeline, super useful.