require-dbt-version
require-dbt-version: version-range | [version-range]
Определение
Вы можете использовать require-dbt-version, чтобы ограничить работу проекта только определённым диапазоном версий dbt.
При установке этой конфигурации:
- Если у вас установлены пакеты из dbt Packages hub, которые указывают
require_dbt_version, не совпадающий с вашей версией, выполнение команд dbt приведёт к ошибке. - Это помогает мейнтейнерам пакетов (например, dbt-utils) гарантировать, что версия dbt пользователя совместима с пакетом.
- Это сигнализирует о совместимости с dbt Fusion Engine (
2.0.0и выше). - Это также может помочь всей команде оставаться синхронизированной на одной версии dbt при локальной разработке, чтобы избежать проблем совместимости из‑за изменённого поведения.
Рекомендуется фиксировать основную (major) версию. Подробнее см. pin to a range. Если эта конфигурация не указана, проверка версии выполняться не будет.
Начиная с 2024 года, когда вы выбираете release track в dbt, чтобы получать регулярные обновления версии dbt, dbt будет игнорировать конфигурацию require-dbt-version.
dbt Labs придерживается принципа нулевых «ломающих» изменений для кода в dbt‑проектах — при регулярных релизах в dbt и выходе новых версий dbt Core. Мы также рекомендуем следующие best practices:
Кавычки в YAML
Эта конфигурация должна быть интерполирована YAML-парсером как строка. Поэтому вы должны заключить значение конфигурации в кавычки, избегая пробелов. Например:
# ✅ Эти варианты будут работать
require-dbt-version: ">=1.0.0" # Двойные кавычки допустимы
require-dbt-version: '>=1.0.0' # Также допустимы одинарные кавычки
# ❌ Эти варианты не будут работать
require-dbt-version: >=1.0.0 # Без кавычек? Не годится
require-dbt-version: ">= 1.0.0" # Не ставьте пробелы после знаков равенства
Избегайте неограниченных верхних границ
Мы рекомендуем задавать как нижнюю, так и верхнюю границу версии, например ">=1.0.0,<3.0.0", чтобы обеспечить стабильность при выходе новых релизов. Мы не рекомендуем использовать неограниченное значение require-dbt-version (например, ">=1.0.0"). Без верхнего ограничения проект может сломаться, когда dbt выпустит новую мажорную версию.
Совместимость с Fusion
Параметр require-dbt-version также сигнализирует о том, поддерживает ли проект или пакет dbt Fusion Engine (2.0.0 и выше).
- Если диапазон версий исключает
2.0.0, Fusion сегодня выдаст предупреждение, а в будущем релизе — ошибку, аналогично поведению dbt Core. - Вы можете обойти проверки версий, используя флаг
--no-version-check.
Подробнее о том, как задавать диапазон версий, см. раздел pin to a range.
Примеры
Следующие примеры показывают, как использовать require-dbt-version:
- Указать минимальную версию dbt — используйте оператор
>=для задания минимальной границы. - Закрепить диапазон версий — используйте список, разделённый запятыми, чтобы задать верхнюю и нижнюю границы.
- Требовать конкретную версию dbt — ограничьте запуск проекта только одной точной версией dbt Core.
Указать минимальную версию dbt
Используйте оператор >=, чтобы задать нижнюю границу версии. Например:
require-dbt-version: ">=1.9.0" # project will only work with versions 1.9 and higher.
require-dbt-version: ">=2.0.0" # project will only work with the dbt Fusion engine (v2.0.0 and higher).
Помните, что наличие неограниченного верхнего предела не рекомендуется. Вместо этого ознакомьтесь с примером pin to a range, чтобы определить диапазон с нижней и верхней границей и тем самым обеспечить стабильность между релизами.
Закрепить диапазон
Используйте список, разделённый запятыми, чтобы задать верхнюю и нижнюю границы. Диапазон версий можно определить либо в виде YAML‑списка (с использованием квадратных скобок), либо в виде строки с разделителями-запятыми — оба варианта валидны и работают.
Чтобы указать совместимость с dbt Fusion Engine, включите 2.0.0 или более высокую версию в ваш диапазон версий. Оба следующих формата являются допустимыми:
require-dbt-version: [">=1.10.0", "<3.0.0"]
# or
require-dbt-version: ">=1.10.0,<3.0.0"
Если ваш диапазон версий исключает 2.0.0 (например, >=1.6.0,<2.0.0), Fusion сейчас покажет предупреждение, а в будущих релизах это станет ошибкой. Вы можете обойти проверки версии, используя флаг --no-version-check.
Требование к конкретной версии dbt
Закрепление за конкретной версией dbt не рекомендуется, так как это ограничивает гибкость проекта и может вызвать проблемы с совместимостью, особенно с пакетами dbt. Рекомендуется закреплять за основным выпуском, используя диапазон версий (например, ">=1.0.0", "<2.0.0") для более широкой совместимости и получения обновлений.
Хотя вы можете ограничить запуск своего проекта только с конкретной версией dbt Core, мы не рекомендуем делать это для dbt Core версии 1.0.0 и выше.
В следующем примере проект будет работать только с dbt v1.5:
require-dbt-version: "1.5.0"
Недопустимые версии dbt
Если версия dbt, используемая для вызова проекта, не соответствует указанной require-dbt-version в проекте или любом из включенных пакетов, dbt немедленно завершится с ошибкой:
$ dbt compile
Running with dbt=1.5.0
Encountered an error while reading the project:
Runtime Error
This version of dbt is not supported with the 'my_project' package.
Installed version of dbt: =1.5.0
Required version of dbt for 'my_project': ['>=1.6.0', '<2.0.0']
Check the requirements for the 'my_project' package, or run dbt again with --no-version-check
Отключение проверки версий
Чтобы подавить ошибки из-за несовместимых версий dbt, используйте флаг --no-version-check при запуске dbt run.
$ dbt run --no-version-check
Running with dbt=1.5.0
Found 13 models, 2 tests, 1 archives, 0 analyses, 204 macros, 2 operations....
Подробности использования см. в разделе global configs.