Определение свойств
Узнайте, как определять свойства для ваших ресурсов в файле properties.yml
В dbt вы можете использовать файлы properties.yml, чтобы задавать свойства (properties) для ресурсов. Вы объявляете свойства в .yml‑файлах, расположенных в той же директории, что и соответствующие ресурсы. Вы можете называть эти файлы как угодно (whatever_you_want.yml) и произвольно вкладывать их в подкаталоги внутри каждой директории.
Мы настоятельно рекомендуем определять свойства в выделенных путях рядом с ресурсами, которые они описывают.
Файлы schema.yml
В предыдущих версиях документации такие файлы назывались schema.yml. Мы отказались от этой терминологии, потому что слово schema в контексте баз данных имеет и другие значения, и пользователи часто думали, что файлы обязательно должны называться schema.yml.
Теперь мы называем эти файлы properties.yml. (Разумеется, вы по‑прежнему можете называть свои файлы schema.yml.)
Какие properties не являются также configs?
В dbt вы можете задавать конфигурации узлов (node configs) в файлах properties.yml — в дополнение к блокам config() и файлу dbt_project.yml. Однако существуют некоторые специальные свойства, которые можно определить только в .yml‑файлах, и которые нельзя настроить с помощью блоков config() или файла dbt_project.yml.
Некоторые свойства являются особыми, потому что:
- для них используется уникальный контекст рендеринга Jinja;
- они создают новые ресурсы проекта;
- они не имеют смысла как иерархическая конфигурация;
- это более старые свойства, которые ещё не были переопределены как configs.
К таким свойствам относятся:
columnsdeprecation_datedescriptionquotesourceproperties (например,loaded_at_field)exposureproperties (например,type,maturity)- Обратите внимание: хотя большинство свойств exposure необходимо задавать напрямую в файлах
properties.yml, вы можете установить конфигурациюenabledна уровне проекта в файлеdbt_project.yml.
- Обратите внимание: хотя большинство свойств exposure необходимо задавать напрямую в файлах
macroproperties (например,arguments)testsversions
Пример
Ниже приведён пример, в котором для проекта определены и sources, и models:
version: 2
sources:
- name: raw_jaffle_shop
description: A replica of the postgres database used to power the jaffle_shop app.
tables:
- name: customers
columns:
- name: id
description: Primary key of the table
data_tests:
- unique
- not_null
- name: orders
columns:
- name: id
description: Primary key of the table
data_tests:
- unique
- not_null
- name: user_id
description: Foreign key to customers
- name: status
data_tests:
- accepted_values:
arguments: # available in v1.10.5 and higher. Older versions can set the <argument_name> as the top-level property.
values: ['placed', 'shipped', 'completed', 'return_pending', 'returned']
models:
- name: stg_jaffle_shop__customers # Must match the filename of a model -- including case sensitivity.
config:
tags: ['pii']
columns:
- name: customer_id
data_tests:
- unique
- not_null
- name: stg_jaffle_shop__orders
config:
materialized: view
columns:
- name: order_id
data_tests:
- unique
- not_null
- name: status
data_tests:
- accepted_values:
values: ['placed', 'shipped', 'completed', 'return_pending', 'returned']
config:
severity: warn
Связанная документация
Полный список всех поддерживаемых свойств и конфигураций, разбитый по типам ресурсов, можно найти здесь:
- Модели: properties и configs
- Источники: properties и configs
- Seed-данные: properties и configs
- Снимки (snapshots): properties
- Анализы: properties
- Макросы: properties
- Экспозиции (exposures): properties