Перейти к основному содержимому

tags

dbt_project.yml

Обратите внимание, что для обратной совместимости tags поддерживается как ключ верхнего уровня, но без возможностей наследования конфигурации.

Определение

Примените тег (или список тегов) к ресурсу.

Эти теги можно использовать как часть синтаксиса выбора ресурсов при выполнении следующих команд:

  • dbt run --select tag:my_tag — Запускает все модели, помеченные указанным тегом.
  • dbt build --select tag:my_tag — Собирает все ресурсы, помеченные указанным тегом.
  • dbt seed --select tag:my_tag — Загружает (seed) все ресурсы, помеченные указанным тегом.
  • dbt snapshot --select tag:my_tag — Создаёт snapshot для всех ресурсов, помеченных указанным тегом.
  • dbt test --select tag:my_tag — Косвенно запускает все тесты, связанные с моделями, которые помечены этим тегом.

Использование тегов с оператором +

Вы можете использовать оператор +, чтобы включать восходящие или нисходящие зависимости при выборе по tag:

  • dbt run --select tag:my_tag+ — Запускает модели, помеченные my_tag, и все их нисходящие зависимости.
  • dbt run --select +tag:my_tag — Запускает модели, помеченные my_tag, и все их восходящие зависимости.
  • dbt run --select +tag:my_tag+ — Запускает модели, помеченные my_tag, а также их восходящие и нисходящие зависимости.
  • dbt run --select tag:my_tag+ --exclude tag:exclude_tag — Запускает модели, помеченные my_tag, и их нисходящие зависимости, и исключает модели, помеченные exclude_tag, независимо от их зависимостей.
Примечания по использованию тегов

При работе с тегами учитывайте следующее:

  • Каждый отдельный тег должен быть строкой.
  • Теги являются аддитивными по иерархии проекта.
  • Для некоторых типов ресурсов (например, sources, exposures) теги необходимо задавать на верхнем уровне.

Подробнее см. в разделе примечания по использованию.

Примеры

Следующие примеры показывают, как применять теги к ресурсам в вашем проекте. Вы можете настраивать теги в файлах dbt_project.yml, schema.yml или в SQL-файлах.

Использование тегов для запуска частей проекта

Применяйте теги в dbt_project.yml как одиночное значение или как строку. В следующем примере одна из моделей — модель jaffle_shop — помечена тегом contains_pii.

dbt_project.yml
models:
jaffle_shop:
+tags: "contains_pii"

staging:
+tags:
- "hourly"

marts:
+tags:
- "hourly"
- "published"

metrics:
+tags:
- "daily"
- "published"

Apply tags to models

This section demonstrates applying tags to models in the dbt_project.yml, schema.yml, and SQL files.

To apply tags to a model in your dbt_project.yml file, you would add the following:

dbt_project.yml
models:
jaffle_shop:
+tags: finance # jaffle_shop model is tagged with 'finance'.

Чтобы применить теги к модели в YAML-файле свойств, расположенном в каталоге models/, нужно добавить следующее, используя свойство config:

models/stg_customers.yml
models:
- name: stg_customers
description: Customer data with basic cleaning and transformation applied, one row per customer.
config:
tags: ['santi'] # stg_customers.yml model is tagged with 'santi'.
columns:
- name: customer_id
description: The unique key for each customer.
data_tests:
- not_null
- unique

Чтобы применить теги к модели в SQL‑файле, необходимо добавить следующее:

models/staging/stg_payments.sql
{{ config(
tags=["finance"] # stg_payments.sql model is tagged with 'finance'.
) }}

select ...

Запускать ресурсы с определёнными тегами (или, наоборот, исключать ресурсы с определёнными тегами) можно с помощью следующих команд:

# Run all models tagged "daily"
dbt run --select tag:daily

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

Примените теги к семенам

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

Применение тегов к сохранённым запросам

В следующем примере показано, как применить тег к сохранённому запросу в файле dbt_project.yml. В результате сохранённый запрос будет помечен тегом order_metrics.

dbt_project.yml
saved-queries:
jaffle_shop:
customer_order_metrics:
+tags: order_metrics

Затем запустите ресурсы с определённым тегом, используя следующую команду:

# Запустить все ресурсы с тегом "order_metrics"
dbt run --select tag:order_metrics

Во втором примере показано, как применить несколько тегов к сохранённому запросу в файле semantic_model.yml. В этом случае сохранённый запрос помечается тегами order_metrics и hourly.

semantic_model.yml
saved_queries:
- name: test_saved_query
description: "{{ doc('saved_query_description') }}"
label: Test saved query
config:
tags:
- order_metrics
- hourly

Запуск ресурсов с несколькими тегами выполняется следующей командой:

# Запустить все ресурсы с тегами "order_metrics" и "hourly"
dbt build --select tag:order_metrics tag:hourly

Примечания по использованию

Теги должны быть строками

Каждый отдельный тег должен быть строковым значением (например, marketing или daily).

В следующем примере my_tag: "my_value" является недопустимым, поскольку это пара ключ–значение.

sources:
- name: ecom
schema: raw
description: E-commerce data for the Jaffle Shop
config:
tags:
my_tag: "my_value". # invalid
tables:
- name: raw_customers
config:
tags:
my_tag: "my_value". # invalid

Предупреждение возникает в том случае, если значение tags не является строкой. Например:

Field config.tags: {'my_tag': 'my_value'} is not valid for source (ecom)

Теги являются аддитивными

Теги накапливаются и применяются иерархически. Пример выше приведёт к следующему результату:

МодельТеги
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
Loading table...

Другие типы ресурсов

Теги также можно применять к sources, exposures и даже к отдельным столбцам ресурса.
Эти ресурсы пока не поддерживают свойство config, поэтому теги нужно указывать как ключ верхнего уровня.

models/schema.yml

exposures:
- name: my_exposure
config:
tags: ['exposure_tag'] # changed to config in v1.10
...

sources:
- name: source_name
config:
tags: ['top_level'] # changed to config in v1.10

tables:
- name: table_name
config:
tags: ['table_level'] # changed to config in v1.10

columns:
- name: column_name
config:
tags: ['column_level'] # changed to config in v1.10 and backported to 1.9
data_tests:
- unique:
config:
tags: ['test_level'] # changed to config in v1.10

В приведённом выше примере тест unique будет выбран при использовании любого из этих четырёх тегов:

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

Нашли ошибку?

0
Loading