Обновление до версии 0.17.0
dbt v0.17.0 делает компиляцию более последовательной, улучшает производительность и исправляет ряд ошибок.
Статьи:
Значительные изменения
Обратите внимание на следующие изменения в версии 0.17.0, которые могут потребовать обновления кода в вашем проекте dbt.
Новая версия конфигурации dbt_project.yml
dbt v0.17.0 вводит новую версию конфигурации для файла dbt_project.yml
. Эта новая версия конфигурации изменяет семантику того, как dbt интерпретирует файл dbt_project.yml
.
Указание версии конфигурации
Версия конфигурации может быть указана с помощью ключа config-version
в файле dbt_project.yml
:
name: my_project
version: 1.0.0
config-version: 2
models:
...
Допустимые значения для config-version
— это 1
и 2
. При использовании config-version: 2
в dbt разблокируется новая функциональность.
Использование config-version: 2
Улучшенная семантика области видимости переменных
Предыдущие версии dbt позволяли переменным (vars:
) быть ограниченными на уровне папки в иерархии models:
. Это создает несколько проблем:
- Переменные должны действительно применяться только к моделям (так как объявление переменной находится в конфигурации
models:
), но переменные также часто используются в тестах, файлахschema.yml
, макросах, снимках и так далее. - Существует неоднозначность в том, как переменные разрешаются в файлах
schema.yml
. Рассмотрим случай, когда файлschema.yml
ограничен одним значением для переменной, но модель, на которую он ссылается, ограничена другим значением для той же переменной. Поведениеvar()
в этом сценарии плохо определено и часто не соответствует ожиданиям.
В версии 2 конфигурации dbt_project.yml
переменные теперь должны быть определены в словаре верхнего уровня vars:
, например:
name: my_project
version: 1.0.0
config-version: 2
vars:
my_var: 1
another_var: true
models:
...
Этот синтаксис делает область видимости переменных однозначной, так как все узлы в данном пакете получат одно и то же значение для данной переменной. Обратите внимание, что этот синтаксис действительно поддерживает область видимости переменных на уровне пакета. См. документацию по синтаксису файла dbt_project.yml
для получения дополнительной информации.