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

Определение свойств

Узнайте, как определять свойства для ваших ресурсов в файле 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.

К таким свойствам относятся:

Пример

Ниже приведён пример, в котором для проекта определены и sources, и models:

models/jaffle_shop.yml
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

Полный список всех поддерживаемых свойств и конфигураций, разбитый по типам ресурсов, можно найти здесь:

Часто задаваемые вопросы (FAQ)

Нужно ли называть мой файл `.yml`, содержащий тесты и описания, `schema.yml`?
Если я могу называть эти файлы как угодно, как мне их назвать?
Следует ли использовать отдельные файлы для объявления свойств ресурсов или один большой файл?
Можно ли добавлять тесты и описания в SQL config-блоке?
Почему файлы YAML для моделей и источников всегда начинаются с `version: 2`?
Могу ли я использовать расширение файла YAML?

Устранение распространённых ошибок

 Invalid test config given in [model name]

Эта ошибка возникает, когда ваш файл .yml не соответствует структуре, ожидаемой dbt. Полное сообщение об ошибке может выглядеть так:

* Invalid test config given in models/schema.yml near {'namee': 'event', ...}
Invalid arguments passed to "UnparsedNodeUpdate" instance: 'name' is a required property, Additional properties are not allowed ('namee' was unexpected)

Хотя сообщение достаточно подробное, оно должно помочь определить источник проблемы. В данном случае поле name было по ошибке указано как namee. Чтобы исправить эту ошибку, убедитесь, что ваш .yml файл соответствует ожидаемой структуре, описанной в этом руководстве.

 Invalid syntax in your schema.yml file

Если ваш файл .yml не является корректным YAML, dbt покажет ошибку вида:

Runtime Error
Syntax error near line 6
------------------------------
5 | - name: events
6 | description; "A table containing clickstream events from the marketing website"
7 |

Raw Error:
------------------------------
while scanning a simple key
in "<unicode string>", line 6, column 5:
description; "A table containing clickstream events from the marketing website"
^

Эта ошибка произошла из-за того, что после поля description по ошибке была использована точка с запятой (;) вместо двоеточия (:). Чтобы устранить подобные проблемы, найдите файл .yml, указанный в сообщении об ошибке, и исправьте все синтаксические ошибки в этом файле. В этом могут помочь онлайн-валидаторы YAML, однако будьте осторожны и не отправляйте конфиденциальную информацию в сторонние сервисы!

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

0
Loading