# Обновление до v1.4

Доступно в v1

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

Версии dbt v1.3-v1.7 достигли [конца жизненного цикла](https://docs.getdbt.tech/docs/dbt-versions.md#end-of-life-versions), и их поддержка будет прекращена January 31, 2027. После этой даты dbt Labs больше не будет поддерживать эти версии, и они будут удалены из dbt platform.

До этой даты переведите свои окружения на [поддерживаемую версию dbt](https://docs.getdbt.tech/docs/dbt-versions.md) или [канал выпусков](https://docs.getdbt.tech/docs/dbt-versions/dbt-release-tracks.md), чтобы продолжать получать обновления и поддержку. Подробнее см. в руководстве [Переход с устаревших версий dbt](https://docs.getdbt.tech/guides/migrate-off-legacy-dbt-versions.md?step=1).

### Ресурсы

* [Журнал изменений](https://github.com/dbt-labs/dbt/blob/1.4.latest/CHANGELOG.md)
* [Руководство по установке dbt v1 CLI](https://docs.getdbt.tech/docs/local/install-dbt.md)
* [Руководство по обновлению Cloud](https://docs.getdbt.tech/docs/dbt-versions/upgrade-dbt-platform-version.md)

**Финальный релиз:** 25 января 2023 года

dbt v1.4 — это релиз с изменениями «под капотом». Мы усердно работали над перестройкой внутренних механизмов `dbt-core` на более надежной основе, чтобы подготовиться к насыщенному году разработки новых возможностей. Ознакомьтесь с [планом релиза v1.5](https://github.com/dbt-labs/dbt/milestone/82) на GitHub, чтобы узнать, что запланировано на апрель.

## Что нужно знать перед обновлением

dbt Labs стремится обеспечивать обратную совместимость для всех версий 1.x. Если после обновления возникнет ошибка, сообщите нам об этом, [создав issue](https://github.com/dbt-labs/dbt/issues/new).

### Для пользователей артефактов dbt (метаданных)

Версия схемы манифеста обновлена до `v8`. Эти изменения касаются тех, кто разбирает или анализирует содержимое файла `manifest.json` либо использует собственный код для обращения к переменным [`model`](https://docs.getdbt.tech/reference/dbt-jinja-functions/model.md) или [`graph`](https://docs.getdbt.tech/reference/dbt-jinja-functions/graph.md), например `{{ 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](https://github.com/dbt-labs/dbt/discussions/6624), где также можно задать вопросы.

## Новая и обновленная документация

* [**События и структурированное логирование**](https://docs.getdbt.tech/reference/events-logging.md): Система событий dbt была переработана. Информация стала более единообразной по доступности и структуре благодаря типобезопасным схемам событий.
* [**Поддержка Python**](https://docs.getdbt.tech/faqs/Core/install-python-compatibility.md): Python 3.11 вышел в октябре 2022 года. Он официально поддерживается в dbt-core v1.4, хотя полная поддержка также зависит от плагина адаптера для вашей платформы данных. По словам разработчиков Python, «Python 3.11 на 10–60% быстрее Python 3.10». Мы рекомендуем попробовать [`dbt parse`](https://docs.getdbt.tech/reference/commands/parse.md) с dbt v1.4 + Python 3.11 и сравнить время выполнения с dbt v1.3 + Python 3.10. Поделитесь результатами!
* [**Метрики**](https://docs.getdbt.tech/docs/build/build-metrics-intro.md): Параметр `time_grain` стал необязательным, чтобы упростить работу с метриками, не привязанными ко времени.
* **Контекст dbt-Jinja:** Метод контекста [local\_md5](https://docs.getdbt.tech/reference/dbt-jinja-functions/local_md5.md) вычисляет [MD5-хеш](https://en.wikipedia.org/wiki/MD5) для использования *внутри* dbt. (Не путать с md5 в SQL!)
* [**Exposures**](https://docs.getdbt.tech/docs/build/exposures.md) теперь могут зависеть от `metrics`.
* [**Пакеты в tar-архивах**](https://docs.getdbt.tech/docs/build/packages.md#internally-hosted-tarball-url): В некоторых организациях требования безопасности разрешают загружать ресурсы только из внутренних сервисов. Чтобы обеспечить установку пакетов из сред хранения (например, Artifactory или бакетов облачного хранилища), теперь можно указать любой доступный URL, по которому можно скачать сжатый пакет dbt.
* [**Детальная настройка «предупреждений как ошибок»**](https://docs.getdbt.tech/reference/global-configs/warnings.md): Благодаря полной переработке и унификации классов предупреждений и исключений в `dbt-core` теперь можно задать более детальную конфигурацию `--warn-error-options`, указав, какие именно предупреждения dbt должен (или не должен) считать ошибками.
* [**Отложенное разрешение ссылок (deferral)**](https://docs.getdbt.tech/reference/node-selection/defer.md#favor-state) поддерживает необязательный параметр `--favor-state`.

### Расширенные настройки инкрементальных моделей

* [**Параметр `incremental_predicates`**](https://docs.getdbt.tech/docs/build/incremental-strategy.md#about-incremental_predicates) теперь поддерживается наиболее популярными адаптерами, обеспечивая большую гибкость при настройке производительности операторов `merge` и `delete` для больших наборов данных.
* **BigQuery:** Инкрементальная стратегия `insert_overwrite` поддерживает новый (старый) механизм — [`time_ingestion_partitioning`](https://docs.getdbt.tech/reference/resource-configs/bigquery-configs.md#partitioning-by-an-ingestion-date-or-timestamp) + [`copy_partitions`](https://docs.getdbt.tech/reference/resource-configs/bigquery-configs.md#copying-partitions), который позволяет значительно сократить затраты и время обработки больших наборов данных.

### Обновления моделей Python

* Для моделей Python по умолчанию [настроена материализация](https://docs.getdbt.tech/docs/build/python-models.md) `table`.
* Модели Python, [выполняемые в Snowpark](https://docs.getdbt.tech/docs/build/python-models.md), по умолчанию будут использовать «анонимные» хранимые процедуры, что немного ускорит выполнение и сделает историю запросов чище.
