meta
- Models
- Sources
- Seeds
- Snapshots
- Tests
- Analyses
- Macros
- Exposures
- Semantic models
- Metrics
- Saved queries
version: 2
models:
- name: model_name
config:
meta: {<dictionary>}
columns:
- name: column_name
meta: {<dictionary>}
The meta
config can also be defined:
- under the
models
config block indbt_project.yml
- in a
config()
Jinja macro within a model's SQL file
See configs and properties for details.
version: 2
sources:
- name: model_name
config:
meta: {<dictionary>}
tables:
- name: table_name
config:
meta: {<dictionary>}
columns:
- name: column_name
meta: {<dictionary>}
version: 2
seeds:
- name: seed_name
config:
meta: {<dictionary>}
columns:
- name: column_name
meta: {<dictionary>}
The meta
config can also be defined under the seeds
config block in dbt_project.yml
. See configs and properties for details.
version: 2
snapshots:
- name: snapshot_name
config:
meta: {<dictionary>}
columns:
- name: column_name
meta: {<dictionary>}
The meta
config can also be defined:
- under the
snapshots
config block indbt_project.yml
- in a
config()
Jinja macro within a snapshot's SQL block
See configs and properties for details.
You can't add YAML meta
configs for generic tests. However, you can add meta
properties to singular tests using config()
at the top of the test file.
The meta
config is not currently supported for analyses.
version: 2
macros:
- name: macro_name
meta: {<dictionary>}
arguments:
- name: argument_name
version: 2
exposures:
- name: exposure_name
meta: {<dictionary>}
Configure meta
in the your semantic models YAML file or under the semantic-models
config block in the dbt_project.yml
file.
Dimensions, entities, and measures can also have their own meta
configurations.
semantic_models:
- name: semantic_model_name
config:
meta: {<dictionary>}
dimensions:
- name: dimension_name
config:
meta: {<dictionary>}
entities:
- name: entity_name
config:
meta: {<dictionary>}
measures:
- name: measure_name
config:
meta: {<dictionary>}
The meta
config can also be defined under the semantic-models
config block in dbt_project.yml
. See configs and properties for details.
metrics:
- name: number_of_people
label: "Number of people"
description: Total count of people
type: simple
type_params:
measure: people
config:
meta:
my_meta_config: 'config_value'
saved_queries:
- name: saved_query_name
config:
meta: {<dictionary>}
Definition
The meta
field can be used to set metadata for a resource and accepts any key-value pairs. This metadata is compiled into the manifest.json
file generated by dbt, and is viewable in the auto-generated documentation.
Depending on the resource you're configuring, meta
may be available within the config
property, and/or as a top-level key. (For backwards compatibility, meta
is often (but not always) supported as a top-level key, though without the capabilities of config inheritance.)
Examples
Designate a model owner
Additionally, indicate the maturity of a model using a model_maturity:
key.
version: 2
models:
- name: users
meta:
owner: "@alice"
model_maturity: in dev
Designate a source column as containing PII
version: 2
sources:
- name: salesforce
tables:
- name: account
meta:
contains_pii: true
columns:
- name: email
meta:
contains_pii: true
Configure one meta attribute for all seeds
seeds:
+meta:
favorite_color: red
Override one meta attribute for a single model
{{ config(meta = {
'single_key': 'override'
}) }}
select 1 as id
Assign owner and favorite_color in the dbt_project.yml as a config property
models:
jaffle_shop:
+meta:
owner: "@alice"
favorite_color: red
Assign meta to semantic model
The following example shows how to assign a meta
value to a semantic model in the semantic_model.yml
file and dbt_project.yml
file:
- Semantic model
- dbt_project.yml
semantic_models:
- name: transaction
model: ref('fact_transactions')
description: "Transaction fact table at the transaction level. This table contains one row per transaction and includes the transaction timestamp."
defaults:
agg_time_dimension: transaction_date
config:
meta:
data_owner: "Finance team"
used_in_reporting: true
semantic-models:
jaffle_shop:
+meta:
used_in_reporting: true
Assign meta to dimensions, measures, entities
- Semantic model
- dbt_project.yml
The following example shows how to assign a meta
value to a dimension, entity, and measure in a semantic model:
semantic_models:
- name: semantic_model
...
dimensions:
- name: order_date
type: time
config:
meta:
data_owner: "Finance team"
used_in_reporting: true
entities:
- name: customer_id
type: primary
config:
meta:
description: "Unique identifier for customers"
data_owner: "Sales team"
used_in_reporting: false
measures:
- name: count_of_users
expr: user_id
config:
meta:
used_in_reporting: true
This second example shows how to assign a data_owner
and additional metadata value to a dimension in the dbt_project.yml
file using the +meta
syntax. The similar syntax can be used for entities and measures.
semantic-models:
jaffle_shop:
...
dimensions:
- name: order_date
config:
meta:
data_owner: "Finance team"
used_in_reporting: true