tags
- Файл проекта
- Файл свойств
- Конфигурация SQL-файла
resource_type:
- name: resource_name
config:
tags: <string> | [<string>] # Supports single strings or list of strings
# Optional: Add the following specific properties for models
columns:
- name: column_name
config:
tags: <string> | [<string>] # changed to config in v1.10 and backported to 1.9
data_tests:
test-name:
config:
tags: "single-string" # Supports single string
tags: ["string-1", "string-2"] # Supports list of strings
Чтобы применить теги к модели в вашем каталоге models/, добавьте свойство config, аналогично следующему примеру:
models:
- name: my_model
description: A model description
config:
tags: ['example_tag']
{{ config(
tags="<string>" | ["<string>"]
) }}
Обратите внимание, что для обратной совместимости 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.
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:
models:
jaffle_shop:
+tags: finance # jaffle_shop model is tagged with 'finance'.
Чтобы применить теги к модели в YAML-файле свойств, расположенном в каталоге models/, нужно добавить следующее, используя свойство config:
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‑файле, необходимо добавить следующее:
{{ 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
Примените теги к семенам
seeds:
jaffle_shop:
utm_mappings:
+tags: marketing
seeds:
jaffle_shop:
utm_mappings:
+tags:
- marketing
- hourly
Применение тегов к сохранённым запросам
В следующем примере показано, как применить тег к сохранённому запросу в файле dbt_project.yml. В результате сохранённый запрос будет помечен тегом order_metrics.
saved-queries:
jaffle_shop:
customer_order_metrics:
+tags: order_metrics
Затем запустите ресурсы с определённым тегом, используя следующую команду:
# Запустить все ресурсы с тегом "order_metrics"
dbt run --select tag:order_metrics
Во втором примере показано, как применить несколько тегов к сохранённому запросу в файле semantic_model.yml. В этом случае сохранённый запрос помечается тегами order_metrics и hourly.
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)
Теги являются аддитивными
Теги накапливаются и применяются иерархически. Пример выше приведёт к следующему результату:
| Loading table... |
Другие типы ресурсов
Теги также можно применять к sources, exposures и даже к отдельным столбцам ресурса.
Эти ресурсы пока не поддерживают свойство config, поэтому теги нужно указывать как ключ верхнего уровня.
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