Skip to main content

Exposure properties

Overview

Exposures are defined in properties.yml files nested under an exposures: key. You may define exposures in YAML files that also define sources or models. Exposure properties are "special properties" in that you can't configure them in the dbt_project.yml file or using config() blocks. Refer to Configs and properties for more info.

Note that while most exposure properties must be configured directly in these YAML files, you can set the enabled config at the project level in thedbt_project.yml file.

You can name these files whatever_you_want.yml, and nest them arbitrarily deeply in subfolders within the models/ directory.

Exposure names must contain only letters, numbers, and underscores (no spaces or special characters). For a short human-friendly name with title casing, spaces, and special characters, use the label property.

models/<filename>.yml
version: 2

exposures:
- name: <string_with_underscores>
description: <markdown_string>
type: {dashboard, notebook, analysis, ml, application}
url: <string>
maturity: {high, medium, low} # Indicates level of confidence or stability in the exposure
enabled: true | false
tags: [<string>]
meta: {<dictionary>}
owner:
name: <string>
email: <string>

depends_on:
- ref('model')
- ref('seed')
- source('name', 'table')
- metric('metric_name')

label: "Human-Friendly Name for this Exposure!"
config:
enabled: true | false

- name: ... # declare properties of additional exposures

Example

models/jaffle/exposures.yml
version: 2

exposures:

- name: weekly_jaffle_metrics
label: Jaffles by the Week # optional
type: dashboard # required
maturity: high # optional
url: https://bi.tool/dashboards/1 # optional
description: > # optional
Did someone say "exponential growth"?

depends_on: # expected
- ref('fct_orders')
- ref('dim_customers')
- source('gsheets', 'goals')
- metric('count_orders')

owner:
name: Callum McData
email: data@jaffleshop.com



- name: jaffle_recommender
maturity: medium
type: ml
url: https://jupyter.org/mycoolalg
description: >
Deep learning to power personalized "Discover Sandwiches Weekly"

depends_on:
- ref('fct_orders')

owner:
name: Data Science Drew
email: data@jaffleshop.com


- name: jaffle_wrapped
type: application
description: Tell users about their favorite jaffles of the year
depends_on: [ ref('fct_orders') ]
owner: { email: summer-intern@jaffleshop.com }

Project-level configs

You can define project-level configs for exposures in the dbt_project.yml file under the exposures: key using the + prefix. Currently, only the enabled config is supported:

dbt_project.yml
name: 'project_name'

# rest of dbt_project.yml

exposures:
+enabled: true
0