Обновление до 0.16.0
dbt v0.16.0 содержит множество новых функций, исправлений ошибок и улучшений. Это руководство охватывает всю важную информацию, которую следует учитывать при обновлении с более ранней версии dbt до 0.16.0.
Статьи:
- Изменения в инкрементальных моделях BigQuery
- Тестирование производительности инкрементальных моделей BigQuery
Изменения, нарушающие совместимость
Следующие изменения могут потребовать изменения кода в вашем проекте dbt после обновления до v0.16.0.
Определение типа для seed
В dbt было внесено множество улучшений в логику определения типа. Ранее dbt ошибочно преобразовывал строковые значения в seed CSV файлах, такие как sunday или March, в временные метки даты в году 0001. Это было очевидно неверно и теперь исправлено, но если вы полагались на эту функциональность, то это представляет собой изменение, нарушающее совместимость. Подробнее об изменении см. в этом pull request.
Устаревание одноаргументного generate_schema_name
Поддержка одноаргументного варианта макросов generate_schema_name (устаревшего в предыдущем выпуске) больше не поддерживается. Если вы используете одноаргументный вариант generate_schema_name, см. документацию по пользовательским схемам для примера использования двухаргументного варианта generate_schema_name.
Синтаксис partition_by для BigQuery
Конфигурация partition_by для моделей BigQuery теперь принимает словарь, содержащий следующие ключи:
field: Имя поля в , по которому выполняется разбиениеdata_type: Тип данных для пол я разбиения (date,timestamp,datetime,int64)range: Требуется только еслиdata_type— этоint64(для разбиения на диапазоны)
Если строка предоставляется в качестве конфигурации partition_by для модели в BigQuery, dbt попытается разобрать эту строку в представление поля и типа данных. В будущем выпуске dbt будет удалена возможность настройки конфигураций partition_by с использованием строки.
См. документацию по разбиению BigQuery для получения дополнительной информации о обновленном синтаксисе partition_by для моделей BigQuery. Также см. это руководство для получения дополнительной информации о том, как dbt использует этот новый синтаксис для ускорения и удешевления построения инкрементальных моделей.
Компиляция аргументов тестов источников
Аргументы тестов источников теперь обрабатываются так же, как и аргументы тестов моделей. Если вы предоставляете выражения jinja в тестах схем таблиц источников, то это изменение, нарушающее совместимость для вашего проекта. Подробнее об изменении см. в этом pull request.
Форматирование временных меток в журналах отладки
Формат временных меток в журналах отладки изменился. Ранее запятая (,) использовалась для разделения секунд и микросекунд в временных метках журналов отладки. Если вы программно обрабатываете журналы отладки, создаваемые dbt, это может быть изменением, нарушающим совместимость. Подробнее об изменении см. в этом pull request.
Удаление docrefs из manifest
docrefs больше не присутствуют в скомпилированном файле manifest.json. Если вы программно обрабатываете файл manifest.json, создаваемый dbt, и используете поле docrefs в манифесте, то это изменение, нарушающее совместимость. Подробнее об изменении см. в этом pull request.
Изменение интерфейса макроса get_catalog
Макросы get_catalog теперь должны принимать два аргумента: Relation, указывающий на информационную схему, и список схем для поиска в предоставленной информац ионной схеме. Если вы переопределяете макрос get_catalog в вашем проекте, вы можете найти больше информации об этом изменении в этом pull request.
Изменение интерфейса макроса snowflake__list_schemas
Макрос snowflake__list_schemas теперь должен возвращать фрейм данных Agate с колонкой под названием "name". Если вы переопределяете макрос snowflake__list_schemas в вашем проекте, вы можете найти больше информации об этом изменении в этом pull request.
Базы данных Snowflake с 10,000 схем
dbt больше не поддерживает работу с базами данных Snowflake, содержащими более 10,000 схем. Это связано с ограничениями запроса show schemas in database, который dbt теперь использует для поиска схем в базе данных Snowflake. Если ваш проект dbt работает с базой данных Snowflake, содержащей более 10,000 схем, вам не следует обновляться до dbt v0.16.0.
Если это изменение применимо к вашему проекту dbt, пожалуйста, сообщите нам об этом в issue dbt или в Slack dbt.
Требования к Python
Если вы устанавливаете dbt в окружение Python вместе с другими модулями Python, обратите внимание на следующие изменения в зависимостях dbt для Python:
- Добавлена зависимость от
'cffi>=1.9,<1.14',для исправления проблем сsnowflake-connector-python - Изменена верхняя граница
'requests<2.23.0',для исправления проблем сsnowflake-connector-python - Добавлена зависимость от
'idna<2.9'для исправления проблем сsnowflake-connector-python - Изме нен
snowflake-connector-pythonна2.2.1 - Увеличена версия
google-cloud-bigqueryдо>=1.22.0для добавления поддержки разбиения на диапазоны целых чисел - Изменена верхняя граница для
Jinja2 < 3
Новая и измененная документация
- Конфигурации разбиения BigQuery
- Выбор конкретных seeds для запуска с помощью
--select - Новый макрос
generate_database_name - Новый контекст
dbt_project.yml - Новые конфигурации для файлов schema.yml
- Новые конфигурации для объявлений источников
- Новые конфигурации подключения Postgres
- Новые конфигурации аутентификации Snowflake KeyPair
- Новая переменная контекста
builtinsjinja - Новый метод контекста
fromyaml - Новый метод контекста
toyaml - Новая переменная контекста
project_name - Новая переменная контекста
dbt_version - Новая переменная
database_schemasв контекстеon-run-end