tags

Changelog

Definition

Apply a tag (or list of tags) to a resource.

These tags can be used as part of the resource selection syntax, when running the following commands:

  • dbt run --select tag:my_tag
  • dbt seed --select tag:my_tag
  • dbt snapshot --select tag:my_tag

Examples

Use tags to run parts of your project

Apply tags in your dbt_project.yml as a single value or a string:

dbt_project.yml
models:
jaffle_shop:
+tags: "contains_pii"
staging:
+tags:
- "hourly"
marts:
+tags:
- "hourly"
- "published"
metrics:
+tags:
- "daily"
- "published"

You can also apply tags to individual resources using a config block:

models/staging/stg_payments.sql
{{ config(
tags=["finance"]
) }}
select ...

Then, run part of your project like so:

# Run all models tagged "daily"
$ dbt run --model tag:daily
# Run all models tagged "daily", except those that are tagged hourly
$ dbt run --model tag:daily --exclude tag:hourly

Apply tags to seeds

dbt_project.yml
seeds:
jaffle_shop:
utm_mappings:
+tags: marketing
dbt_project.yml
seeds:
jaffle_shop:
utm_mappings:
+tags:
- marketing
- hourly

Usage notes

Tags are additive

Tags accumulate hierarchically. The above example would result in:

ModelTags
models/staging/stg_customers.sqlcontains_pii, hourly
models/staging/stg_payments.sqlcontains_pii, hourly, finance
models/marts/dim_customers.sqlcontains_pii, hourly, published
models/metrics/daily_metrics.sqlcontains_pii, daily, published

Other resource types

Tags can also be applied to sources, exposures, and even specific columns in a resource. These resources do not yet support the config property, so you'll need to specify the tags as a top-level key instead.

models/schema.yml
version: 2
exposures:
- name: my_exposure
tags: ['exposure_tag']
...
sources:
- name: source_name
tags: ['top_level']
tables:
- name: table_name
tags: [<string>]
columns:
- name: column_name
tags: ['column_level']
tests:
- unique:
tags: ['test_level']

In the example above, the unique test would be selected by any of the three tags:

$ dbt test --select tag:top_level
$ dbt test --select tag:column_level
$ dbt test --select tag:test_level