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

Доступно в v1

### Ресурсы

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

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

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

### Для разработчиков плагинов адаптеров

Мы переработали набор тестов для проверки функциональности плагинов адаптеров. Подробности о новом наборе тестов см. в разделе «Тестирование адаптера» руководства [Создание, тестирование, документирование и продвижение адаптеров](https://docs.getdbt.tech/guides/adapter-creation.md).

Теперь в аннотациях типов абстрактных методов `get_response` и `execute` в качестве возвращаемого значения указан только `connection.AdapterReponse`. Раньше эти методы могли возвращать строку. Мы рекомендуем обновить ваши методы так, чтобы они возвращали объект класса `AdapterResponse`, либо реализовать подкласс, специфичный для вашего адаптера. Это также позволит добавлять поля, отражающие особенности выполнения запросов вашим адаптером, например `rows_affected` или `bytes_processed`.

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

Версия схемы манифеста будет обновлена до v5. Единственное изменение касается значения по умолчанию для `config` у узлов, прошедших разбор.

Пользователям [функциональности на основе состояния](https://docs.getdbt.tech/reference/node-selection/syntax.md#how-does-selection-work), например селектора `state:modified`, следует помнить:

> Версии схем артефактов, передаваемых через `--state`, должны быть совместимы с используемой версией dbt.

Если у вас есть два задания и одно из них сравнивает состояние с артефактами, созданными другим заданием, или использует их для отложенного разрешения ссылок, необходимо обновить оба задания одновременно. При несовпадении версий dbt сообщит об этом следующей ошибкой:

```text
Expected a schema version of "https://schemas.getdbt.com/dbt/manifest/v5.json" in <state-path>/manifest.json, but found "https://schemas.getdbt.com/dbt/manifest/v4.json". Are you running with a different version of dbt?
```

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

[**Инкрементальные модели**](https://docs.getdbt.tech/docs/build/incremental-models.md) теперь могут принимать список из нескольких столбцов в качестве `unique_key`, если для уникальной идентификации каждой строки требуется комбинация столбцов. Это поддерживается наиболее распространёнными хранилищами данных для инкрементальных стратегий, использующих настройку `unique_key` (`merge` и `delete+insert`).

[**Универсальные тесты**](https://docs.getdbt.tech/reference/resource-properties/data-tests.md) могут задавать собственные имена. Это позволяет сделать более понятным имя, которое dbt автоматически формирует для теста. Собственные имена необходимы, чтобы различать случаи, когда один и тот же универсальный тест определён несколько раз с разными конфигурациями.

[**Источники**](https://docs.getdbt.tech/reference/source-properties.md) позволяют задавать настройки непосредственно рядом с другими свойствами в `.yml`, как и другие типы ресурсов. Единственная поддерживаемая настройка — `enabled`; с её помощью можно динамически включать и отключать источники в зависимости от окружения или переменных пакета.

### Расширенные и экспериментальные возможности

**Пересборка по обновлённым источникам.** Появился новый *экспериментальный* метод выбора: [`source_status:fresher`](https://docs.getdbt.tech/reference/node-selection/methods.md#source_status). Как и методы `state:` и `result`, он предназначен для более эффективного выполнения вашего DAG с использованием метаданных dbt. Если у dbt есть доступ к предыдущим и текущим результатам `dbt source freshness` (артефакту `sources.json`), dbt может сравнить их, определить, в какие источники загружены новые данные, и выбрать только ресурсы, расположенные ниже по графу зависимостей от «более свежих» источников. Подробнее см. в разделах [Понятие состояния](https://docs.getdbt.tech/reference/node-selection/syntax.md#how-does-selection-work) и [CI/CD в dbt](https://docs.getdbt.tech/docs/deploy/continuous-integration.md).

У [**функций dbt-Jinja**](https://docs.getdbt.tech/reference/dbt-jinja-functions-context-variables.md) появилась новая обзорная страница и два новых элемента:

* [`print`](https://docs.getdbt.tech/reference/dbt-jinja-functions/print.md) предоставляет доступ к функции Python `print()`. Её можно использовать как альтернативу `log()`, а также совместно с настройкой `QUIET` в расширенных рабочих процессах на основе макросов.
* [`selected_resources`](https://docs.getdbt.tech/reference/dbt-jinja-functions/selected_resources.md) предоставляет во время выполнения список узлов DAG, выбранных текущей задачей.

В [**глобальные настройки**](https://docs.getdbt.tech/reference/global-configs/about-global-configs.md) добавлено несколько новых параметров:

* `QUIET` и `NO_PRINT` позволяют управлять тем, какие сообщения журнала dbt выводит в терминал. Они предназначены для расширенных рабочих процессов на основе макросов, например [codegen](https://hub.getdbt.com/dbt-labs/codegen/latest/).
* `CACHE_SELECTED_ONLY` — *экспериментальная* настройка, которая может значительно ускорить подготовку dbt к запуску, если вы запускаете лишь несколько моделей из большого проекта, управляющего множеством схем.

### Для пользователей отдельных адаптеров

В **dbt-bigquery** добавлена поддержка более детальной настройки времени ожидания запросов и повторных попыток при определении [профиля подключения](https://docs.getdbt.tech/docs/local/connect-data-platform/bigquery-setup.md).

В **dbt-spark** добавлена поддержка [метода подключения `session`](https://docs.getdbt.tech/docs/local/connect-data-platform/spark-setup.md#example-profiles) для работы с сессией pySpark, позволяющего быстро выполнять итерации при разработке расширенной или экспериментальной функциональности. Этот метод подключения не рекомендуется новым пользователям и не поддерживается в dbt.

### Зависимости

[Совместимость с Python](https://docs.getdbt.tech/faqs/Core/install-python-compatibility.md): dbt v1 официально поддерживает Python 3.10
