Обновление до v1.6
Версии dbt v1.3-v1.7 достигли конца жизненного цикла, и их поддержка будет прекращена January 31, 2027. После этой даты dbt Labs больше не будет поддерживать эти версии, и они будут удалены из dbt platform.
До этой даты переведите свои окружения на поддерживаемую версию dbt или канал выпусков, чтобы продолжать получать обновления и поддержку. Подробнее см. в руководстве Переход с устаревших версий dbt.
В dbt v1.6 основное внимание уделено трём направлениям:
- Следующий этап развития многопроектных развёртываний: улучшения контрактов, групп и прав доступа, версий; а также базовые компоненты для межпроектного
ref - Перезапуск семантического слоя: интеграция dbt v1 и MetricFlow
- Механизмы для масштабируемого развёртывания в зрелых процессах разработки (
dbt cloneиdbt retry)
Ресурсы
Что нужно знать перед обновлением
dbt Labs обеспечивает обратную совместимость для всех версий 1.x, за исключением изменений, явно указанных ниже. Если при обновлении возникнет ошибка, сообщите нам об этом, создав issue.
Изменения в поведении
metricsСпецификация метрик изменилась и теперь использует MetricFlow.
Если в вашем проекте dbt определены метрики, необходимо перейти на dbt v1.6, поскольку спецификация YAML перенесена из dbt_metrics в MetricFlow. Имеющиеся у вас тесты не будут компилироваться в v1.5 и более ранних версиях.
- dbt v1.6 не поддерживает Python 3.7, срок поддержки которого истёк 23 июня. Поддерживаются версии Python 3.8, 3.9, 3.10 и 3.11.
- В рамках перезапуска семантического слоя dbt спецификация
metricsзначительно изменилась. - Версия схемы манифеста теперь — v10.
- dbt Labs прекращает поддержку установки dbt v1 и адаптеров через Homebrew. Подробнее см. в обсуждении.
Для пользователей артефактов dbt (метаданных)
Версия схемы манифеста обновлена до v10. Конкретные изменения:
- Добавлен атрибут
semantic_modelsи изменены атрибутыmetrics - Добавлено свойство модели
deprecation_date - В конфигурацию узла по умолчанию добавлен параметр
on_configuration_change(для поддержки материализованных представлений) - Небольшие изменения типов в
contractsиconstraints - Раздел
metadataманифеста включаетproject_name
Для разработчиков плагинов адаптеров
Чтобы получить более подробную информацию и задать вопросы, ознакомьтесь с обсуждением на GitHub и оставьте комментарий: dbt-labs/dbt-core#7958.
Новая и обновлённая документация
MetricFlow
- Создавайте метрики с помощью MetricFlow — ключевого компонента Semantic Layer. С помощью MetricFlow можно определять метрики и создавать семантические модели; инструмент доступен в командной строке (CLI) для dbt v1.6 beta и более поздних версий.
Материализованные представления
Поддерживаются на следующих платформах:
Новые команды для зрелых процессов развёртывания
dbt retry выполняет ранее запущенную команду с момента сбоя. Повторно собирайте только те узлы, которые завершились с ошибкой или были пропущены при предыдущем выполнении run/build/test, вместо того чтобы начинать всё с нуля.
dbt clone использует возможности каждой платформы данных для создания легковесных копий моделей dbt из одной среды в другой. Это полезно для быстрого создания новой среды разработки или переноса отдельных моделей из промежуточной среды в производственную.
Совместная работа с несколькими проектами
Дата прекращения поддержки: для моделей можно указывать дату прекращения поддержки, о которой будут предупреждаться разработчики моделей и их потребители ниже по цепочке зависимостей. Это позволяет задавать чёткие сроки миграции для версионируемых моделей и предоставляет механизм, упрощающий удаление незрелых или редко используемых моделей, что помогает избежать разрастания проекта.
Имена моделей могут повторяться в разных пространствах имён (проектах/пакетах), если они уникальны в пределах каждого проекта/пакета. Мы настоятельно рекомендуем использовать ref с двумя аргументами при обращении к модели из другого пакета/проекта.
Больше согласованности и гибкости при работе с пакетами. Ресурсы, определённые в пакете, учитывают определения переменных и глобальных макросов в области видимости этого пакета.
- Переменные
vars, определённые в файлеdbt_project.ymlпакета, теперь учитываются в порядке разрешения переменных при компиляции узлов этого пакета, хотя--varsиз CLI иvarsкорневого проекта по-прежнему имеют приоритет. Подробнее см. в разделе «Приоритет переменных». - Макросы
generate_x_name(задающие пользовательские правила именования баз данных, схем и псевдонимов) следуют той же схеме переопределения в области видимости пакета, что и другие «глобальные» макросы. Обзор возможных вариантов см. в разделе диспетчеризация макросов.
Зависимости проектов: добавлены dependencies.yml и зависимые projects как возможность dbt Enterprise. Позволяет обеспечивать соблюдение прав доступа к моделям (public в сравнении с protected/private) за пределами проектов/пакетов. Обеспечивает межпроектные ссылки ref на публичные модели без необходимости устанавливать исходный код вышестоящих проектов.
Устаревающая функциональность
Возможность установленных пакетов переопределять встроенные материализации без явного согласия пользователя объявлена устаревающей.
-
Переопределение встроенной материализации из установленного пакета вызывает предупреждение об использовании устаревающей функциональности.
-
Использование пользовательской материализации из установленного пакета не вызывает предупреждения об использовании устаревающей функциональности.
-
Использование переопределения встроенной материализации из пакета в корневом проекте через материализацию-обёртку по-прежнему поддерживается. Например:
{% materialization view, default %}
{{ return(my_cool_package.materialization_view_default()) }}
{% endmaterialization %}
Другие небольшие изменения
state:unmodifiedиstate:oldдля выбора по состоянию в соответствии с принципом MECEinvocation_args_dictвключает полную командуinvocation_commandв виде строкиdbt debug --connectionпозволяет проверить только подключение к платформе данных, указанное в профилеdbt docs generate --empty-catalogпозволяет пропустить заполнение каталога при генерации документации--defer-stateобеспечивает более детальное управление- В
dbt lsдобавлен метод выбора семантических моделей, позволяющий использоватьdbt ls -s "semantic_model:*", а также возможность выполнятьdbt ls --resource-type semantic_model. - Синтаксис
DBT_ENV_SECRET_изменён наDBT_ENV_SECRET: завершающий символ подчёркивания больше не требуется.