Переход на dbt v2, часть 1: подготовка к обновлению
Введение
dbt v2 — это следующий этап развития трансформации данных. dbt был полностью переработан, но по своей сути dbt v2 — это новая версия, и, как и перед переходом на любую новую версию, к обновлению нужно подготовиться. Это руководство поможет вам пройти все этапы подготовки.
Если вы впервые знакомитесь с dbt v2, перед началом работы с этим руководством изучите нашу подробную документацию: в ней рассказывается, что это такое, как работает и чем отличается от dbt v1. Освоив основы, можно приступать к подготовке проектов, чтобы воспользоваться скоростью и возможностями dbt v2.
Предварительные требования
В этом руководстве рассматривается подготовка к обновлению до dbt v2. Оно предназначено для клиентов, которые уже используют dbt platform с одной из версий dbt v1. Если вы только начинаете работать с dbt, ознакомьтесь с нашими руководствами по быстрому старту.
Чтобы выполнить действия из этого руководства, необходимо соблюсти следующие условия:
- Вы используете учетную запись dbt platform на любом тарифном плане.
- У вас есть лицензия разработчика.
- У вас есть необходимые разрешения для редактирования проектов.
- В вашем проекте используется поддерживаемый адаптер
Начните с небольших, более новых или хорошо знакомых вам проектов. Так будет проще выявить и устранить возможные проблемы, прежде чем переходить к обновлению более крупных и сложных проектов.
Включение функций проверки готовности к dbt v2
Панель готовности к dbt v2 в dbt platform, которая показывает статус готовности каждого проекта и препятствия для обновления, внедряется поэтапно. Если она еще не включена автоматически для вашей учетной записи, администратор учетной записи может включить ее вручную. Это позволит администраторам и разработчикам видеть, какие проекты и задания готовы к dbt v2, выявлять препятствия и запускать обновление после завершения подготовки.
Шаг 1: включите переключатель проверки готовности
Для этого шага нужны права администратора учетной записи в dbt platform:
- Нажмите на имя своей учетной записи на левой боковой панели и выберите Account settings.
- Перейдите на экран Account и нажмите Edit.
- Прокрутите страницу до раздела Settings и установите флажок рядом с Enable dbt v2 readiness & upgrade features.
- Нажмите Save.
После включения:
- Все администраторы и разработчики смогут видеть статус готовности каждого проекта к dbt v2, в том числе какие задания готовы или не готовы к dbt v2 и почему.
- Администраторы смогут запускать обновление до dbt v2 из сред разработки, настроек сред и настроек заданий (в рамках имеющихся разрешений).
Шаг 2: ограничьте доступ к обновлению (необязательно)
По умолчанию любой пользователь, которому доступен помощник по обновлению, может запустить обновление с его помощью. Чтобы разрешить запуск обновления только определенным пользователям, можно включить дополнительный переключатель управления доступом.
Переключатель Enable restricted dbt v2 upgrade permissions доступен только учетным записям Enterprise/Enterprise+, для которых предоставлена эта возможность. Если она вам нужна, обратитесь к своему менеджеру по работе с клиентами.
- На том же экране настроек Account установите флажок рядом с Enable restricted dbt v2 upgrade permissions.
- Нажмите Save.
После включения выполнять обновление смогут только пользователи, которым назначен набор разрешений v2 Migration Admin для соответствующих проектов. Инструкции по назначению этого разрешения приведены в разделе Предоставление доступа к обновлению во второй части этого руководства.
Панель готовности к dbt v2
После включения функций проверки готовности вы сможете отслеживать готовность проекта по мере выполнения описанных ниже шагов подготовки. Панель показывает, какие задания готовы или не готовы к dbt v2 и почему.
Распространенные причины неготовности:
- Одна или несколько сред не используют канал выпусков v1 Latest
- Не используется поддерживаемая платформа данных
- В проекте нет ни одного успешного запуска задания
- Задания не запускались в течение последних 7 дней или недавно завершались с ошибками
По мере выполнения шагов этого руководства проверяйте панель готовности, чтобы отслеживать прогресс.
Обновление до последней версии dbt v1
Перед обновлением до dbt v2 необходимо перевести среды на канал выпусков dbt v1 v1 Latest. Канал v1 Latest включает все функции и инструменты, которые помогут вам подготовиться к dbt v2. Он обеспечивает наиболее плавное обновление, проверяя, что ваш проект не зависит от устаревшего поведения.
Всегда сначала тестируйте обновления версий в среде разработки. Используйте функцию переопределения версии dbt, чтобы безопасно опробовать канал выпусков v1 Latest, не затрагивая команду и запуски в рабочей среде.
Шаг 1: протестируйте в среде разработки (с переопределением версии)
Протестируйте канал выпусков v1 Latest для своей учетной записи, не меняя среду для всей команды:
- Нажмите на имя своей учетной записи на левой боковой панели и выберите Account settings.
- Выберите Credentials на боковой панели и укажите свой проект.
- На боковой панели нажмите Edit и прокрутите до User development settings.
- Выберите v1 Latest в раскрывающемся списке dbt version и нажмите Save.
- Запустите Studio IDE или dbt platform CLI и протестируйте привычные рабочие процессы разработки.
- Убедитесь, что переопределение активно: выполните любую команду dbt и проверьте System Logs. В первой строке должны отображаться
Running with dbt=и выбранная вами версия. Если номер версии —v1.11или выше, вы на верном пути к готовности к dbt v2.
Если все работает как ожидается, перейдите к следующему шагу, чтобы начать обновление сред. Если появятся предупреждения об устаревших возможностях, не пугайтесь! Мы рассмотрим их далее в этом руководстве. Если возникнут ошибки, вернитесь к предыдущей версии и обратитесь к руководствам по обновлению версий, чтобы устранить проблемы, вызванные различиями между текущей и последней доступной версией dbt v1.
Шаг 2: обновите среду разработки
После успешного тестирования своей индивидуальной среды разработки с переопределенной версией обновите среду разработки для всего проекта (обязательно предупредите команду!):
- Перейдите в Environments в настройках проекта.
- Выберите среду Development и нажмите Edit.
- Откройте раскрывающийся список dbt version и выберите v1 Latest.
- Нажмите Save, чтобы применить изменения.
После обновления среды разработки можно удалить личное переопределение: вернитесь к учетным данным своей учетной записи и выберите ту же версию, что используется в среде.
Шаг 3: обновите промежуточные и предпродуктивные среды
Если в вашей организации есть промежуточные или предпродуктивные среды, обновите их до обновления рабочей среды:
- Перейдите в Environments и выберите промежуточную или предпродуктивную среду.
- Нажмите Edit и выберите v1 Latest в раскрывающемся списке dbt version.
- Нажмите Save.
- Запускайте задания в этой среде в течение нескольких дней, чтобы убедиться, что все работает корректно.
Это обеспечит дополнительную заключительную проверку перед обновлением рабочих сред.
Шаг 4: обновите рабочую среду
После проверки в промежуточной среде (или в среде разработки, если промежуточной нет) обновите рабочую среду:
- Перейдите в Environments и выберите среду Production.
- Нажмите Edit и выберите v1 Latest в раскрывающемся списке dbt version.
- Нажмите Save, чтобы применить изменения.
- Отслеживайте первые несколько запусков в рабочей среде, чтобы убедиться, что все выполняется успешно.
Шаг 5: обновите задания
Хотя в большинстве случаев версией dbt управляют среды, в некоторых старых конфигурациях заданий могут быть переопределения версии. Проверьте задания и обновите те, в которых явно указана версия dbt, чтобы они использовали канал выпусков v1 Latest, заданный для среды.
Устранение всех предупреждений об устаревших возможностях
dbt v2 выполняет строгую проверку и не принимает устаревший код, который сейчас вызывает предупреждения в dbt v1. Перед обновлением до dbt v2 необходимо устранить все предупреждения об устаревших возможностях. К счастью, инструмент автоматического исправления в Studio IDE может автоматически устранить большинство распространенных проблем такого рода.
В этом руководстве описано, как устранить предупреждения об устаревших возможностях, не покидая dbt platform. Если вы предпочитаете работать локально в редакторах VS Code или Cursor, можно запустить автоматическое исправление в нашем расширении dbt для VS Code. Подробнее об этих рабочих процессах см. в руководстве по установке.
Что обрабатывает инструмент автоматического исправления
Инструмент автоматического исправления может автоматически устранить многие проблемы, связанные с устаревшими возможностями, в том числе:
- Переместить пользовательские настройки в словарь
meta - Исправить повторяющиеся ключи YAML
- Исправить нераспознаваемые свойства ресурсов
- Обновить устаревшие варианты конфигурации
Полный список обрабатываемых устаревших возможностей см. в README инструмента autofix.
Помимо устранения устаревших возможностей, инструмент автоматического исправления пытается обновить пакеты до минимальной поддерживаемой версии, совместимой с dbt v2. Подробнее о совместимости с dbt v2 см. в разделе Поддержка пакетов.
Шаг 1: создайте новую ветку
Перед запуском инструмента автоматического исправления создайте новую ветку, чтобы изолировать изменения:
- Перейдите в Studio IDE, нажав Studio в меню слева.
- Откройте панель Version control (значок ветки git) на левой боковой панели.
- Нажмите Create branch и задайте понятное имя, например
fusion-deprecation-fixes. - Нажмите Create, чтобы переключиться на новую ветку.
Инструмент автоматического исправления изменит файлы вашего проекта. Обязательно создайте коммит или временно сохраните незавершенную работу с помощью stash, чтобы не потерять изменения.
Шаг 2: запустите инструмент автоматического исправления
Теперь можно выполнить поиск предупреждений об устаревших возможностях и автоматически устранить их:
- Нажмите меню с тремя точками в правом нижнем углу Studio IDE.
- Выберите Check & fix deprecations.
Инструмент запускает dbt parse --show-all-deprecations --no-partial-parse, чтобы выявить все устаревшие возможности в проекте. В зависимости от размера проекта это может занять некоторое время.
- После завершения разбора просмотрите результаты на панели Command history внизу слева.
Шаг 3: проверьте и примените автоматические исправления
После завершения проверки на устаревшие возможности просмотрите результаты и примените автоматические исправления:
- На панели Command history просмотрите список предупреждений об устаревших возможностях.
- Нажмите кнопку Autofix warnings, чтобы продолжить.
- В диалоговом окне Proceed with autofix ознакомьтесь с предупреждением и нажмите Continue.
Инструмент автоматически изменяет файлы проекта, устраняя проблемы, поддающиеся автоматическому исправлению, а затем повторно выполняет разбор, чтобы выявить оставшиеся предупреждения.
- По завершении появится сообщение об успешном выполнении. Нажмите Review changes.
Шаг 4: проверьте изменения
Просмотрите изменения, внесенные инструментом автоматического исправления, чтобы убедиться в их корректности:
- Откройте панель Version control, чтобы увидеть все измененные файлы.
- Нажимайте на отдельные файлы, чтобы просмотреть конкретные изменения.
- Найдите файлы с перемещенными настройками, исправленными свойствами или обновленным синтаксисом.
- При необходимости внесите дополнительные изменения вручную.
Шаг 5: создайте коммит с изменениями
Убедившись, что автоматические исправления вас устраивают, сохраните их в коммите в своей ветке:
- На панели Version control добавьте содержательное сообщение коммита, например «Устранены предупреждения об устаревших возможностях для обновления до dbt v2».
- Нажмите Commit and sync, чтобы сохранить изменения.
Шаг 6: устраните оставшиеся устаревшие возможности
Если инструмент автоматического исправления сообщает об оставшихся предупреждениях, которые не удалось устранить автоматически:
- Просмотрите сообщения с предупреждениями на панели Command history. Каждое предупреждение содержит путь к файлу и номер строки.
- Обновите код вручную, следуя рекомендациям по устранению устаревших возможностей:
- Пользовательские входные параметры следует переместить в конфигурацию
meta. - Устаревшие свойства следует заменить их новыми аналогами.
- Подробные инструкции по миграции см. в соответствующих руководствах по обновлению версий.
- Пользовательские входные параметры следует переместить в конфигурацию
- После внесения исправлений вручную снова запустите Check & fix deprecations, чтобы убедиться, что все предупреждения устранены.
- Создайте коммит с изменениями.
Шаг 7: выполните слияние с основной веткой
После устранения всех устаревших возможностей:
- Создайте pull request у своего провайдера git, чтобы выполнить слияние исправлений устаревших возможностей.
- Попросите команду проверить изменения.
- Выполните слияние PR с основной веткой разработки.
- Убедитесь, что эти изменения развернуты в ваших средах, прежде чем переходить к обновлению до dbt v2.
Проверка и обновление пакетов dbt
Этот раздел содержит инструкции по ручному обновлению пакетов. Рекомендуем запустить инструмент автоматического исправления, прежде чем выполнять эти действия.
Инструмент автоматического исправления находит пакеты, несовместимые с dbt v2, и обновляет их до минимальной совместимой версии. Подробнее см. в разделе Поддержка пакетов.
Пакеты dbt расширяют функциональность проекта, но они должны быть совместимы с dbt v2. Большинство широко используемых пакетов от dbt Labs (например, dbt_utils и dbt_project_evaluator) и многие пакеты сообщества уже поддерживают dbt v2. Перед обновлением убедитесь в совместимости пакетов и обновите их до последних версий. Проверьте, поддерживают ли пакеты версию 2.0.0, или уточните это у сопровождающего, если не уверены.
Что делать, если пакет несовместим?
Если критически важный пакет пока несовместим с dbt v2:
- Уточните у сопровождающего пакета планы по поддержке.
- Создайте issue с запросом на поддержку dbt v2.
- Рассмотрите возможность самостоятельно внести изменения для обеспечения совместимости.
- Все равно попробуйте его использовать! Несовместимая часть пакета может не затрагивать ваш проект.
Сообщения о совместимости пакетов
dbt-autofixПредупреждения dbt v2 и журналы dbt-autofix могут содержать разные сообщения о совместимости пакетов.
Если вы используете dbt-autofix при переходе на v2 в Studio IDE или расширении dbt для VS Code, вы можете заметить расхождения между сообщениями о совместимости пакетов в dbt-autofix и предупреждениями v2.
Вот почему:
- Предупреждения dbt v2 выдаются на основе значения
require-dbt-versionпакета и того, включает лиrequire-dbt-versionверсию2.0.0. - Некоторые пакеты уже совместимы с v2, хотя их сопровождающие еще не обновили
require-dbt-version. dbt-autofixзнает об этих совместимых пакетах и не будет пытаться обновить пакет, о совместимости которого ему уже известно.
Это означает, что даже если вы видите предупреждение v2 для пакета, который dbt-autofix определяет как совместимый, вам не нужно менять этот пакет.
Это временное расхождение в сообщениях: мы работаем над внедрением улучшенного механизма определения совместимости из dbt-autofix в предупреждения v2.
Вот пример предупреждения v2 в Studio IDE, которое сообщает, что пакет несовместим с v2, хотя dbt-autofix указывает, что он совместим:
dbt1065: Package 'dbt_utils' requires dbt version [>=1.30,<2.0.0], but current version is 2.0.0. This package may not be compatible with your dbt version. dbt(1065) [Ln 1, Col 1]
Шаг 1: проверьте текущие пакеты
Определите, какие пакеты использует ваш проект:
- В Studio IDE откройте корневой каталог проекта.
- Найдите файл
packages.ymlилиdependencies.yml. - Просмотрите список пакетов и их текущие версии.
Ваш файл будет выглядеть примерно так:
packages:
- package: dbt-labs/dbt_utils
version: 1.0.0
- package: dbt-labs/codegen
version: 0.9.0
Шаг 2: проверьте совместимость и найдите последние версии пакетов
Найдите проверенные пакеты, совместимые с dbt v2, в каталоге пакетов dbt: убедитесь, что конфигурация require-dbt-version включает 2.0.0 или более высокую версию. Подробнее см. в разделе Поддержка пакетов.
Для пакетов, несовместимых с dbt v2:
- Перейдите в репозиторий пакета на GitHub.
- Проверьте README или последние выпуски на наличие информации о совместимости с dbt v2.
- Найдите issues или обсуждения поддержки dbt v2.
Для каждого пакета найдите самую новую версию:
- Для пакетов, размещенных на dbt Hub, посетите этот сайт.
- Для пакетов из GitHub проверьте страницу выпусков репозитория.
- Запишите номер последней версии каждого используемого пакета.
Для пакетов из Hub можно использовать диапазоны версий, чтобы получать актуальные обновления:
packages:
- package: dbt-labs/dbt_utils
version: [">=1.0.0", "<3.0.0"] # Gets latest 1.x or 2.x version
Шаг 3: обновите версии пакетов
Укажите последние совместимые версии в файле packages.yml или dependencies.yml:
-
В Studio IDE откройте файл
packages.ymlилиdependencies.yml. -
Обновите версию каждого пакета до последней совместимой.
-
Сохраните файл.
До обновления:
packages:
- package: dbt-labs/dbt_utils
version: 0.9.6
- package: dbt-labs/codegen
version: 0.9.0После обновления:
packages:
- package: dbt-labs/dbt_utils
version: [">=1.0.0", "<2.0.0"]
- package: dbt-labs/codegen
version: [">=0.12.0", "<1.0.0"]
Шаг 4: установите обновленные пакеты
После изменения версий пакетов установите их:
- В командной строке Studio IDE выполните:
dbt deps --upgrade
Флаг --upgrade указывает dbt установить последние версии в заданных диапазонах и обновить файл package-lock.yml.
- Просмотрите вывод команды, чтобы убедиться, что все пакеты установлены успешно.
- Убедитесь, что файл
package-lock.ymlобновлен и содержит новые версии пакетов.
Файл package-lock.yml фиксирует конкретные версии пакетов для воспроизводимых сборок. Рекомендуем сохранять этот файл в системе контроля версий, чтобы вся команда использовала одинаковые версии пакетов.
Шаг 5: протестируйте проект с обновленными пакетами
После обновления пакетов протестируйте проект, чтобы убедиться, что все работает:
-
Запустите часть моделей, чтобы проверить базовую функциональность:
dbt run --select tag:daily -
Запустите тесты, чтобы обнаружить несовместимые изменения (конкретная команда может отличаться):
dbt test -
Если возникнут проблемы:
- Просмотрите журнал изменений пакета на наличие несовместимых изменений
- Адаптируйте код к новому поведению пакета
- Если проблемы сохраняются, временно зафиксируйте более старую совместимую версию (если возможно)
Шаг 6: создайте коммит с обновлениями пакетов
Убедившись, что обновленные пакеты работают корректно:
-
На панели Version control подготовьте изменения к коммиту:
packages.ymlилиdependencies.ymlpackage-lock.yml
-
Добавьте сообщение коммита, например «Обновлены пакеты dbt для совместимости с dbt v2».
-
Нажмите Commit and sync.
Обновление заданий
Используйте панель готовности к dbt v2, чтобы проверить задания на совместимость с dbt v2 и устранить найденные проблемы.
Для заданий, отмеченных как готовые к dbt v2 в интерфейсе проверки готовности, кнопка Run once on dbt v2 заменяется раскрывающимся списком Debug on dbt v2 в баннере или модальном окне статуса готовности. Выбирайте вариант отладки, если хотите интерактивно изучить или исправить проблемы в Studio IDE. Используйте Run once on dbt v2, если хотите проверить поведение при выполнении в контексте развертывания.
Проверьте задания
Панель готовности показывает количество заданий, которые не готовы к dbt v2 или имеют неизвестный статус готовности. Если сообщения о готовности не отображаются, попросите администратора учетной записи включить dbt v2 readiness & upgrade features в настройках учетной записи. Инструкции по настройке см. в разделе Включение функций проверки готовности к dbt v2.
Если задание не запускалось в течение последних 7 дней, его нужно запустить один раз, чтобы стали доступны варианты отладки.
- Откройте список заданий одним из следующих способов:
- В главном меню перейдите в Orchestration → Jobs.
- На панели готовности нажмите Review jobs.
- Найдите значок готовности к dbt v2 справа от заданий. Нажмите Review job для любого задания, которое не готово или имеет неизвестный статус готовности.
- Нажмите Debug on dbt v2 и выберите один из следующих вариантов:
Отладка в Studio
В Studio IDE запустите dbt v2 в среде разработки, чтобы просмотреть предупреждения и ошибки проекта:
- Нажмите Debug in Studio. dbt задаст для вашей пользовательской переменной среды
DBT_DEVELOP_CORE_VERSIONзначениеv2-stable, а затем откроет Studio IDE с выбранной вкладкой Problems.
- Просмотрите предупреждения и ошибки на вкладке Problems.
- Исправьте проблемы вручную или запустите инструмент автоматического исправления.
- Когда проект будет выполняться без предупреждений и ошибок, создайте коммит и опубликуйте изменения.
- После слияния изменений дождитесь повторного запуска задания или запустите его вручную.
Чтобы отменить переопределение latest-fusion, используйте элемент выбора версии dbt в Studio IDE или измените dbt version в разделе User development settings по пути Account settings → Credentials. Подробнее см. в разделе Переопределение версии dbt.
Отладка в Studio с dbt Wizard Бета-версия
Если у вас есть доступ к dbt Wizard с включёнными функциями ИИ, вы можете воспользоваться навыком миграции на dbt v2. Этот навык помогает исправлять ошибки совместимости прямо в Studio IDE с помощью dbt Wizard — без ручного анализа логов. Он классифицирует каждую ошибку, автоматически применяет проверенные исправления и показывает, что препятствует дальнейшей миграции.
Процесс миграции на dbt v2 доступен через dbt Wizard в Studio IDE. Если вы используете VS Code или dbt platform CLI, воспользуйтесь вместо этого инструментом autofix.
- В списке заданий нажмите кнопку Review job для задания с успешным запуском.
- Если кнопка Review job не отображается, включите переключатель Show dbt v2 eligibility в списке заданий.
- Во всплывающем окне dbt v2 eligibility unknown for this job нажмите Debug in Studio with dbt Wizard.
- dbt перенаправит вас в Studio IDE и переключит вашу персональную среду разработки на dbt v2.
- Откроется dbt Wizard и автоматически запустит навык миграции на dbt v2 со следующим запросом:
I need help fixing dbt v2 compatibility issues in this project. Please investigate and resolve any deprecation warnings or incompatibilities. Please use the migrating-dbt-core-to-fusion skill to guide this. - Рассмотрите и одобрите запросы разрешений от dbt Wizard, чтобы он мог выполнять необходимые команды.
- dbt Wizard последовательно выполняет
dbt compile, анализирует результаты и применяет исправления, пока компиляция не завершится успешно или не возникнет ошибка, которую он не сможет устранить. Если дальнейшая работа невозможна, он корректно завершает процесс, объясняет, что не удалось исправить, создаёт markdown-файл со сводкой всех внесённых изменений и предоставляет ссылку на него. - Когда проект будет компилироваться без предупреждений и ошибок, создайте коммит и опубликуйте изменения.
- После слияния изменений дождитесь повторного запуска задания или запустите его вручную на dbt v2.
Процесс миграции на v2 с помощью Developer Agent: анализ и исправление ошибок совместимости с v2 в Studio IDE.Однократный запуск на dbt v2
Когда вы уверены, что задание готово к dbt v2, можно запустить его один раз на этом движке, не меняя настройки всей среды. Функция Run once on dbt v2 может быть временно недоступна, пока уже отправленный запрос на запуск на dbt v2 ожидает выполнения.
- Нажмите Run once on dbt v2.
- Откроется окно задания, и dbt запустит его на dbt v2, не меняя другие задания или настройки среды.
- После успешного выполнения задания нажмите Override eligibility status, чтобы обновить статус готовности.
Поздравляем! Вы подтвердили готовность заданий к dbt v2.
Что дальше?
Вы выявили и устранили ограничения и выполнили все шаги подготовки. Теперь ваш проект готов к обновлению до dbt v2!
Перейдите к части 2: выполнение перехода












