Обновление до v1.4
Версии dbt v1.3-v1.7 достигли конца жизненного цикла, и их поддержка будет прекращена January 31, 2027. После этой даты dbt Labs больше не будет поддерживать эти версии, и они будут удалены из dbt platform.
До этой даты переведите свои окружения на поддерживаемую версию dbt или канал выпусков, чтобы продолжать получать обновления и поддержку. Подробнее см. в руководстве Переход с устаревших версий dbt.
Ресурсы
Финальный релиз: 25 января 2023 года
dbt v1.4 — это релиз с изменениями «под капотом». Мы усердно работали над перестройкой внутренних механизмов dbt-core на более надежной основе, чтобы подготовиться к насыщенному году разработки новых возможностей. Ознакомьтесь с планом релиза v1.5 на GitHub, чтобы узнать, что запланировано на апрель.
Что нужно знать перед обновлением
dbt Labs стремится обеспечивать обратную совместимость для всех версий 1.x. Если после обновления возникнет ошибка, сообщите нам об этом, создав issue.
Для пользователей артефактов dbt (метаданных)
Версия схемы манифеста обновлена до v8. Эти изменения касаются тех, кто разбирает или анализирует содержимое файла manifest.json либо использует собственный код для обращения к переменным model или graph, например {{ model.root_path }}.
Значимые изменения:
- Атрибут
root_pathудален из узлов, не относящихся к seed, чтобы сократить дублирование информации. - Неиспользуемые атрибуты удалены из узлов seed (включая
depends_on.nodes) и изmacros(включаяtags). - Значения
unique_idблоков docs теперь начинаются сdocдля единообразия с другими типами ресурсов.
Для разработчиков и сопровождающих плагинов адаптеров
Кратко: Для этой минорной версии значительных доработок не потребуется. Мы ожидаем большего объема работы для
1.5.0. Мы планируем выпускать бета-версии заранее и часто, а также предоставлять рекомендации по обновлению.
Основные изменения:
- Добавление поддержки Python 3.11
- Переименование или замена устаревших функций обработки исключений
- Добавление поддержки предикатов для инкрементальных моделей (если применимо)
- Использование новых тестов adapter-zone
Более подробную информацию можно найти в dbt v1/discussions/6624, где также можно задать вопросы.
Новая и обновленная документация
- События и структурированное логирование: Система событий dbt была переработана. Информация стала более единообразной по доступности и структуре благодаря типобезопасным схемам событий.
- Поддержка Python: Python 3.11 вышел в октябре 2022 года. Он официально поддерживается в dbt-core v1.4, хотя полная поддержка также зависит от плагина адаптера для вашей платформы данных. По словам разработчиков Python, «Python 3.11 на 10–60% быстрее Python 3.10». Мы рекомендуем попробовать
dbt parseс dbt v1.4 + Python 3.11 и сравнить время выполнения с dbt v1.3 + Python 3.10. Поделитесь результатами! - Метрики: Параметр
time_grainстал необязательным, чтобы упростить работу с метриками, не привязанными ко времени. - Контекст dbt-Jinja: Метод контекста local_md5 вычисляет MD5-хеш для использования внутри dbt. (Не путать с md5 в SQL!)
- Exposures теперь могут зависеть от
metrics. - Пакеты в tar-архивах: В некоторых организациях требования безопасности разрешают загружать ресурсы только из внутренних сервисов. Чтобы обеспечить установку пакетов из сред хранения (например, Artifactory или бакетов облачного хранилища), теперь можно указать любой доступный URL, по которому можно скачать сжатый пакет dbt.
- Детальная настройка «предупреждений как ошибок»: Благодаря полной переработке и унификации классов предупреждений и исключений в
dbt-coreтеперь можно задать более детальную конфигурацию--warn-error-options, указав, какие именно предупреждения dbt должен (или не должен) считать ошибками. - Отложенное разрешение ссылок (deferral) поддерживает необязательный параметр
--favor-state.
Расширенные настройки инкрементальных моделей
- Параметр
incremental_predicatesтеперь поддерживается наиболее популярными адаптерами, обеспечивая большую гибкость при настройке производительности операторовmergeиdeleteдля больших наборов данных. - BigQuery: Инкрементальная стратегия
insert_overwriteподдерживает новый (старый) механизм —time_ingestion_partitioning+copy_partitions, который позволяет значительно сократить затраты и время обработки больших наборов данных.
Обновления моделей Python
- Для моделей Python по умолчанию настроена материализация
table. - Модели Python, выполняемые в Snowpark, по умолчанию будут использовать «анонимные» хранимые процедуры, что немного ускорит выполнение и сделает историю запросов чище.