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

Обновление до v1.6

Поддержка dbt v1.3 – v1.7 будет прекращена January 31, 2027

Версии dbt v1.3-v1.7 достигли конца жизненного цикла, и их поддержка будет прекращена January 31, 2027. После этой даты dbt Labs больше не будет поддерживать эти версии, и они будут удалены из dbt platform.

До этой даты переведите свои окружения на поддерживаемую версию dbt или канал выпусков, чтобы продолжать получать обновления и поддержку. Подробнее см. в руководстве Переход с устаревших версий dbt.

В dbt v1.6 основное внимание уделено трём направлениям:

  1. Следующий этап развития многопроектных развёртываний: улучшения контрактов, групп и прав доступа, версий; а также базовые компоненты для межпроектного ref
  2. Перезапуск семантического слоя: интеграция dbt v1 и MetricFlow
  3. Механизмы для масштабируемого развёртывания в зрелых процессах разработки (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 (задающие пользовательские правила именования баз данных, схем и псевдонимов) следуют той же схеме переопределения в области видимости пакета, что и другие «глобальные» макросы. Обзор возможных вариантов см. в разделе диспетчеризация макросов.
Закрытая бета-версия — dbt Enterprise

Зависимости проектов: добавлены dependencies.yml и зависимые projects как возможность dbt Enterprise. Позволяет обеспечивать соблюдение прав доступа к моделям (public в сравнении с protected/private) за пределами проектов/пакетов. Обеспечивает межпроектные ссылки ref на публичные модели без необходимости устанавливать исходный код вышестоящих проектов.

Устаревающая функциональность​

Возможность установленных пакетов переопределять встроенные материализации без явного согласия пользователя объявлена устаревающей.

  • Переопределение встроенной материализации из установленного пакета вызывает предупреждение об использовании устаревающей функциональности.

  • Использование пользовательской материализации из установленного пакета не вызывает предупреждения об использовании устаревающей функциональности.

  • Использование переопределения встроенной материализации из пакета в корневом проекте через материализацию-обёртку по-прежнему поддерживается. Например:

    {% materialization view, default %}
    {{ return(my_cool_package.materialization_view_default()) }}
    {% endmaterialization %}

Другие небольшие изменения​

  • state:unmodified и state:old для выбора по состоянию в соответствии с принципом MECE
  • invocation_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: завершающий символ подчёркивания больше не требуется.

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

0
Loading