# Поддерживаемые возможности

Узнайте о возможностях, поддерживаемых dbt v2, а также о требованиях и ограничениях.

При установке dbt вы по умолчанию получаете v2. Выбирать между отдельными наборами возможностей не нужно — v2 — это тот же dbt, который работает быстрее и предоставляет больше встроенных возможностей.

## Требования

Чтобы использовать v2 в своём проекте, необходимо:

* Использовать поддерживаемый адаптер и метод аутентификации:

   BigQuery

  * Сервисный аккаунт / Токен пользователя
  * Встроенный OAuth
  * Внешний OAuth
    * [Федерация удостоверений рабочих нагрузок](https://docs.getdbt.tech/docs/platform/manage-access/set-up-bigquery-oauth.md#set-up-bigquery-workload-identity-federation) (Microsoft Entra)
  * [Необходимые разрешения](https://docs.getdbt.tech/docs/platform/connect-data-platform/connect-bigquery.md#required-permissions)

   Databricks

  * Сервисный аккаунт / Токен пользователя
  * Встроенный OAuth

   Redshift

  * Имя пользователя / Пароль
  * Профиль IAM

   Snowflake

  * Имя пользователя / Пароль
  * Встроенный OAuth
  * Внешний OAuth
  * Пара ключей с использованием современного формата PKCS#8
  * MFA

   ClickHouse[Закрытая бета-версия](https://docs.getdbt.tech/docs/dbt-versions/product-lifecycles "Подробнее о статусе или тарифе")

  * Имя пользователя / Пароль

   Apache Spark (только CLI)[Бета-версия](https://docs.getdbt.tech/docs/dbt-versions/product-lifecycles "Подробнее о статусе или тарифе")

  * Thrift

    * Простой уровень аутентификации и безопасности (SASL), механизм PLAIN
    * Без SASL (NOSASL)

  * Livy

    * Базовая аутентификация (имя пользователя и пароль)
    * При развертывании в Amazon Web Services (AWS): AWS Signature Version 4
      * Поддерживается аутентификация с использованием единого входа, сервисных учетных записей или пользовательских токенов

   DuckDB (только CLI)

  DuckDB не требует аутентификации — он работает локально на вашем компьютере.

  *Обратите внимание, что жизненный цикл адаптера может различаться для dbt platform и локальной разработки. Адаптер может стать общедоступным (GA) в платформе dbt раньше, чем для локального использования.*

* Убедиться, что ваш проект может выполняться на последней версии v1 без предупреждений об устаревших возможностях и ошибок.

* Перевести конфигурации Semantic Layer на [последнюю спецификацию YAML](https://docs.getdbt.tech/docs/build/latest-metrics-spec.md).

## Функциональный паритет с dbt v1

На сегодняшний день dbt v2 поддерживает почти все возможности v1.x. Немногочисленные оставшиеся различия описаны ниже, в разделе [Ограничения](#limitations).

В v2 также удалены некоторые устаревшие возможности и введена более строгая проверка ошибочного кода проекта по сравнению с v1.x. Подробности см. в [Руководстве по обновлению](https://docs.getdbt.tech/docs/dbt-versions/dbt-upgrade/upgrading-to-v2.md).

## Функции и возможности

dbt v2 ускоряет рабочие процессы разработки вашей команды благодаря обнаружению семантических и синтаксических ошибок, более быстрому линтеру, отслеживанию происхождения данных на уровне столбцов, языковому серверу и интеграции с VS Code, документации v2 (в полном объёме) и сравнению данных. Расширение dbt для VS Code дополнительно предоставляет такие возможности редактора, как IntelliSense, информация при наведении и отображение ошибок прямо в коде, на базе LSP.

Большинство возможностей v2 доступны сразу и не требуют входа в систему. Некоторые возможности на базе платформы dbt становятся доступны после входа с учётной записью dbt platform — её можно создать бесплатно, платный тариф не требуется. Полное описание возможностей, доступных без входа и после входа в систему, см. в разделе [Доступность возможностей v2](https://docs.getdbt.tech/docs/dbt/dbt-availability.md). Подробнее о возможностях LSP см. в разделе [О dbt LSP](https://docs.getdbt.tech/docs/about-dbt-lsp.md).

подсказка

[Возможности](https://docs.getdbt.tech/docs/platform/about-platform/dbt-platform-features.md) dbt platform (такие как [Advanced CI](https://docs.getdbt.tech/docs/deploy/advanced-ci.md), [dbt Mesh](https://docs.getdbt.tech/docs/mesh/about-mesh.md) и другие) — это корпоративный уровень функциональности поверх v2 — они доступны независимо от способа запуска dbt, в зависимости от вашего [тарифного плана dbt](https://www.getdbt.com/pricing).

## Ограничения

Если ваш проект использует что-либо из перечисленного ниже, вы всё ещё можете использовать v2, но полная миграция пока может быть невозможна:

* Модели, которые зависят от возможностей материализации, не полностью поддерживаемых v2, или требуют конфигураций, которые в ней пока отсутствуют

* Инструменты, которые зависят от точного формата вывода журналов v1.x

* Рабочие процессы, построенные на возможностях платформы dbt, которые v2 пока не поддерживает, например на уведомлениях на уровне моделей

* Использование расширения dbt для VS Code в режиме Agent в Cursor — визуализация происхождения данных отображается только в режиме Editor, поэтому переключитесь в него, если вам нужна полноценная вкладка происхождения данных

* [Линтинг с помощью SQLFluff](https://docs.getdbt.tech/docs/deploy/continuous-integration.md#to-configure-sqlfluff-linting) — Вы используете SQLFluff для линтинга в CI или при локальной разработке. SQLFluff изначально не совместим с dbt v2, но в составе dbt v2 мы предоставляем [высокопроизводительную альтернативу, совместимую с SQLFluff](https://docs.getdbt.tech/reference/commands/lint.md?version=2.0). Поддержка зависит от среды запуска:

  * **Задания CI в dbt platform**: задания CI на версии dbt v2 вызывают [`dbt lint`](https://docs.getdbt.tech/reference/commands/lint.md?version=2.0) вместо SQLFluff, поэтому результаты могут отличаться. См. раздел [Паритет правил с SQLFluff](https://docs.getdbt.tech/reference/commands/lint.md?version=2.0#rule-parity-with-sqlfluff).
  * **Studio IDE**: линтинг с помощью SQLFluff работает, но использует обработчик шаблонов движка dbt v1, а не dbt v2.
  * **Локальная разработка**: в качестве обходного решения можно запускать SQLFluff локально с помощью отдельного обработчика шаблонов движка dbt v1. Встроенный линтер dbt v2 доступен через [команду `dbt lint`](https://docs.getdbt.tech/reference/commands/lint.md?version=2.0)

## Поддержка пакетов

Чтобы определить, совместим ли пакет с dbt v2, посетите [каталог пакетов dbt](https://hub.getdbt.com/) и найдите значок совместимости с dbt v2 или проверьте [настройку `require-dbt-version`](https://docs.getdbt.tech/reference/project-configs/require-dbt-version.md#pin-to-a-range) пакета.

* Пакеты, у которых значение `require-dbt-version` равно `2.0.0` или задаёт диапазон, включающий эту версию, совместимы с dbt v2. Например, `require-dbt-version: ">=1.10.0,<3.0.0"`.

  Даже если в каталоге пакетов не указана совместимость пакета, он всё равно может работать с v2. Взаимодействуйте с сопровождающими пакетов, чтобы отслеживать обновления, и перед развёртыванием [тщательно тестируйте пакеты](https://docs.getdbt.com/guides/dbt-package-compat?step=5), совместимость которых явно не подтверждена.

* Сопровождающие пакетов, которые хотят обеспечить совместимость своих пакетов с v2, могут найти инструкции в [руководстве по обновлению пакетов для dbt v2](https://docs.getdbt.tech/guides/dbt-package-compat.md).

Особенности пакетов Fivetran:

* Пакеты Fivetran `source` и `transformation` объединены в один пакет.
* Если вы вручную установили пакеты источников, такие как `fivetran/github_source`, необходимо убедиться, что установлен пакет `fivetran/github`, и деактивировать модели преобразования.

#### Сообщения о совместимости пакетов

Расхождения между предупреждениями v2 и журналами `dbt-autofix`

Предупреждения dbt v2 и журналы `dbt-autofix` могут содержать разные сообщения о совместимости пакетов.

Если вы используете [`dbt-autofix`](https://github.com/dbt-labs/dbt-autofix) при переходе на v2 в Studio IDE или расширении dbt для VS Code, вы можете заметить расхождения между сообщениями о совместимости пакетов в `dbt-autofix` и предупреждениями v2.

Вот почему:

* Предупреждения dbt v2 выдаются на основе значения `require-dbt-version` пакета и того, включает ли `require-dbt-version` версию `2.0.0`.
* Некоторые пакеты уже совместимы с v2, хотя их сопровождающие еще не обновили `require-dbt-version`.
* `dbt-autofix` знает об этих совместимых пакетах и не будет пытаться обновить пакет, о совместимости которого ему уже известно.

Это означает, что даже если вы видите предупреждение v2 для пакета, который `dbt-autofix` определяет как совместимый, вам не нужно менять этот пакет.

Это временное расхождение в сообщениях: мы работаем над внедрением улучшенного механизма определения совместимости из `dbt-autofix` в предупреждения v2.

Вот пример предупреждения v2 в Studio IDE, которое сообщает, что пакет несовместим с v2, хотя `dbt-autofix` указывает, что он совместим:

```text
dbt1065: Package 'dbt_utils' requires dbt version [>=1.30,<2.0.0], but current version is 2.0.0. This package may not be compatible with your dbt version. dbt(1065) [Ln 1, Col 1]
```

## Дополнительная информация о dbt v2

* [Журнал изменений dbt v2](https://github.com/dbt-labs/dbt/blob/main/CHANGELOG-dbt.md)
* [О расширении dbt](https://docs.getdbt.tech/docs/about-dbt-extension.md)
* [Установка dbt v2](https://docs.getdbt.tech/docs/local/install-dbt.md)
* [Краткое руководство по началу работы с dbt v2](https://docs.getdbt.tech/guides/dbt.md?step=1)
* [Руководство по обновлению](https://docs.getdbt.tech/docs/dbt-versions/dbt-upgrade/upgrading-to-v2.md)
* [Лицензионное соглашение dbt v2](https://www.getdbt.com/dbt-fusion-engine-license-agreement)
