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

Проверка совместимости версий

В первые несколько лет разработки dbt Core ломающие изменения появлялись довольно часто. По этой причине мы рекомендовали указывать требования к версии dbt — особенно если проект использует функции, которые появились недавно или могут измениться в будущих версиях dbt Core. По умолчанию, если вы запускаете проект с несовместимой версией dbt, dbt выдаст ошибку.

Вы можете использовать конфигурацию VERSION_CHECK, чтобы отключить эту проверку и подавить сообщение об ошибке:

$ dbt run --no-version-check
Running with dbt=1.0.0
Found 13 models, 2 tests, 1 archives, 0 analyses, 204 macros, 2 operations....
dbt каналы релизов

Начиная с 2024 года, когда вы выбираете release track в dbt, чтобы получать регулярные обновления версии dbt, dbt будет игнорировать конфигурацию require-dbt-version.

dbt Labs придерживается принципа нулевых «ломающих» изменений для кода в dbt‑проектах — при регулярных релизах в dbt и выходе новых версий dbt Core. Мы также рекомендуем следующие best practices:

 Установка dbt‑пакетов

Если вы устанавливаете dbt‑пакеты для использования в проекте — независимо от того, поддерживается ли пакет вашими коллегами или участником open source‑сообщества dbt — мы рекомендуем закреплять пакет на конкретной ревизии или границе version. dbt управляет этим «из коробки», фиксируя версию/ревизию пакетов в разработке, чтобы гарантировать предсказуемые сборки в продакшене. Подробнее см. Predictable package installs.

 Поддержка dbt‑пакетов

Если вы поддерживаете dbt‑пакеты — будь то для коллег или для участников open source‑сообщества — мы рекомендуем писать защитный код, который проверяет наличие других необходимых пакетов и глобальных макросов. Например, если ваш пакет зависит от наличия макроса date_spine в глобальном пространстве имён dbt, вы можете написать:

models/some_days.sql
{% macro a_few_days_in_september() %}

{% if not dbt.get('date_spine') %}
{{ exceptions.raise_compiler_error("Expected to find the dbt.date_spine macro, but it could not be found") }}
{% endif %}

{{ date_spine("day", "cast('2020-01-01' as date)", "cast('2030-12-31' as date)") }}

{% endmacro %}

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

0