Обновление до версии v1.1
Ресурсы
Что нужно знать перед обновлением
Нет критических изменений для кода в проектах и пакетах dbt. Мы стремимся обеспечивать обратную совместимость для всех версий 1.x. Если вы столкнетесь с ошибкой при обновлении, пожалуйста, сообщите нам, создав задачу.
Для разработчиков адаптеров
Мы переработали набор тестов для функциональности адаптеров. Для получения подробной информации о новом наборе тестов обратитесь к шагу "Тестирование вашего адаптера" в руководстве Создание, тестирование, документирование и продвижение адаптеров.
Абстрактные методы get_response и execute теперь возвращают только connection.AdapterReponse в подсказках типов. Ранее они могли возвращать строку. Мы рекомендуем обновить ваши методы, чтобы они возвращали объект класса AdapterResponse, или реализовать подкласс, специфичный для вашего адаптера. Это также дает вам возможность добавить поля, специфичные для выполнения запросов вашего адаптера, такие как rows_affected или bytes_processed.
Для пользователей артефактов dbt (метаданные)
Версия схемы манифеста будет обновлена до v5. Единственное изменение касается значения по умолчанию для config для разобранных узлов.
Для пользователей функциональности на основе состояния, такой как селектор state:modified, помните, что:
Артефакты
--stateдолжны быть версий схем, совместимых с текущей версией dbt.
Если у вас есть две задачи, где одна сравнивает или откладывает артефакты, созданные другой, вам нужно будет обновить обе одновременно. Если есть несоответствие, dbt предупредит вас следующим сообщением об ошибке:
Ожидалась версия схемы "https://schemas.getdbt.com/dbt/manifest/v5.json" в <state-path>/manifest.json, но найдена "https://schemas.getdbt.com/dbt/manifest/v4.json". Вы используете другую версию dbt?
Новая и измененная документация
Инкрементальные модели теперь могут принимать список из нескольких столбцов в качестве unique_key для моделей, которым требуется комбинация столбцов для уникальной идентификации каждой строки. Это поддерживается наиболее распространенными хранилищами данных для инкрементальных стратегий, использующих конфигурацию unique_key (merge и delete+insert).
Генерические тесты могут определять пользовательские имена. Это полезно для "украшения" синтетического имени, которое dbt применяет автоматически. Это необходимо для устранения неоднозначности в случае, когда один и тот же генерический тест определяется несколько раз с разными конфигурациями.
Источники могут определять конфигурацию в строке с другими свойствами .yml, как и другие типы ресурсов. Единственная поддерживаемая конфигурация — enabled; вы можете использовать это для динамического включения/отключения источников на основе переменных окружения или пакета.
Продвинутая и экспериментальная функциональность
Fresh Rebuilds. В городе появился новый экспериментальный метод выбора: source_status:fresher. Подобно методам state: и result, его цель — использовать метаданные dbt, чтобы запускать ваш DAG более эффективно. Если у dbt есть доступ к предыдущим и текущим результатам dbt source freshness (артефакт sources.json), dbt может сравнить их, чтобы определить, какие источники загрузили новые данные, и выбрать только ресурсы, находящиеся ниже по DAG от «более свежих» источников. Подробнее читайте в разделах Understanding State и CI/CD in dbt.
Функции dbt-Jinja получили новую стартовую страницу и двух новых участников:
printпредоставляет функцию Pythonprint(). Она может использоваться как альтернативаlog(), и вместе с конфигурациейQUIET, для продвинутых рабочих процессов, управляемых макросами.selected_resourcesпредоставляет, во время выполнения, список узлов DAG, выбранных текущей задачей.
Глобальные конфигурации включают некоторые новые дополнения:
QUIETиNO_PRINT, для управления тем, какие сообщения журнала dbt выводит в терминал. Для использования в продвинутых рабочих процессах, управляемых макросами, таких как codegen.CACHE_SELECTED_ONLY— это экспериментальная конфигурация, которая может значительно ускорить подготовку dbt к запуску, в случаях, когда вы запускаете только несколько моделей из большого проекта, управляющего многими схемами.
Для пользователей конкретных адаптеров
dbt-bigquery добавил поддержку более детальной конфигурации времени ожидания запроса и повторной попытки при определении вашего профиля подключения.
dbt-spark добавил поддержку метода подключения session, для использования с сессией pySpark, чтобы поддерживать быструю итерацию при разработке продвинутой или экспериментальной функциональности. Этот метод подключения не рекомендуется для новых пользователей и не поддерживается в dbt Cloud.
dbt-spark получил поддержку метода подключения session, предназначенного для использования с сессией pySpark. Это позволяет ускорить итерации при разработке продвинутой или экспериментальной функциональности. Данный метод подключения не рекомендуется для новых пользователей и не поддерживается в dbt.
Зависимости
Совместимость с Python: dbt Core официально поддерживает Python 3.10