Exposure properties
Related documentation
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.
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
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:
name: 'project_name'
# rest of dbt_project.yml
exposures:
+enabled: true