# Сравнение изменений при разработке

Доступно в v2 | Локальная разработка | Требуется вход

к сведению

Для сравнения изменений требуется базовое состояние — либо [механизм deferral в dbt platform](#how-it-works), который использует ваш аккаунт dbt platform, либо локальный файл `manifest.json`, для которого аккаунт не нужен.

Расширение dbt для VS Code позволяет предварительно просматривать и сравнивать влияние локальных правок на данные в вашем аккаунте dbt platform — включая добавленные и удалённые строки, а также проверку соединений — не дожидаясь CI.

Используйте сравнение изменений, чтобы заранее оценить их влияние и проверить результат перед созданием PR или запуском [задания CI](https://docs.getdbt.tech/docs/deploy/ci-jobs.md):

* Проверяйте корректность результатов при рефакторинге логики, добавлении или удалении столбцов, а также изменении соединений.
* Эта функция сравнивает вашу текущую рабочую копию с состоянием из `manifest.json` (например, с последним состоянием продакшен-среды) и показывает изменения первичных ключей, строк и столбцов на вкладке **Compare**.

Функция сравнения изменений в расширении dbt для VS Code отличается от [функции сравнения изменений в Advanced CI](#how-this-differs-from-advanced-ci), которая запускается на этапе PR при развёртывании, а не локально при разработке.

к сведению

Сравнение изменений при разработке доступно только для моделей. Поддержка seeds, снимков, ephemeral-моделей и Python-моделей появится в ближайшее время.

[![Внесите изменения в модель и просмотрите их на вкладке Compare](/img/docs/extension/vs-compare-changes.png?v=2 "Внесите изменения в модель и просмотрите их на вкладке Compare")](#)Внесите изменения в модель и просмотрите их на вкладке Compare

## Предварительные требования

Чтобы использовать функцию сравнения изменений в расширении dbt для VS Code, вам потребуется:

* [Платформа данных, поддерживаемая](https://docs.getdbt.tech/docs/dbt/supported-features.md?version=2.0#requirements) dbt v2 (BigQuery, Databricks, Redshift или Snowflake)
* Установленное [расширение dbt для VS Code](https://docs.getdbt.tech/docs/install-dbt-extension.md) вместе с самостоятельно установленным [dbt v2](https://docs.getdbt.tech/docs/dbt/get-started-dbt.md)
* Базовое состояние для сравнения изменений — см. раздел [Как это работает](#how-it-works), чтобы выбрать между [автоматическим deferral](https://docs.getdbt.tech/docs/platform/about-defer.md) и ручной настройкой с помощью [`manifest.json`](https://docs.getdbt.tech/reference/artifacts/manifest-json.md?version=2.0).

**Вход и аутентификация**

Необходимость входа зависит от того, как вы задаёте базовое состояние:

* **Если вы используете deferral в dbt platform (рекомендуется):** [Войдите](https://docs.getdbt.tech/docs/sign-in-dbt-extension.md) в аккаунт dbt platform. Также вам потребуется файл [`dbt_cloud.yml`](https://docs.getdbt.tech/reference/dbt_cloud.yml.md) в локальном каталоге `.dbt` (`~/.dbt/dbt_cloud.yml` в macOS/Linux), чтобы расширение могло получить манифест из среды, используемой для deferral.
* **Если вы задаёте базовое состояние вручную с помощью `manifest.json`:** Аккаунт dbt platform не требуется. Укажите расширению путь к локальному файлу `manifest.json`, и сравнение изменений будет выполняться относительно него.

## Как это работает

Сравнение изменений при разработке сопоставляет две материализованные модели в вашем хранилище данных. А именно, модель, построенная в вашей схеме разработки (определяемой активным профилем), сравнивается с моделью, на которую ссылается ваш `manifest.json` (например, с последним состоянием продакшен-среды). Обе стороны сравнения всегда представляют собой таблицы в хранилище; содержимое SQL-файлов не сравнивается.

От выбранного подхода зависит, потребуется ли вам аккаунт dbt platform:

* **Deferral в dbt platform (рекомендуется):** Требуется аккаунт dbt platform и хотя бы один успешный запуск задания в среде, используемой для deferral (обычно staging или продакшен). dbt v2 автоматически скачивает манифест из этой среды и использует его как базовое состояние.
* **Ручная настройка каталога `state`:** Укажите расширению путь к локальному файлу `manifest.json` (например, скопированному из другой среды). Аккаунт dbt platform не требуется; запуск задания также не нужен.
  <br />

## Использование сравнения изменений

Чтобы использовать сравнение изменений при разработке, выполните следующие действия:

1. Откройте SQL-файл модели в редакторе.

2. Внесите изменения в модель, например добавьте новый столбец или измените существующий (например, `left_join_customers` на `right_join_customers`).

3. Запустите сравнение изменений в [интерфейсе VS Code](https://code.visualstudio.com/docs/getstarted/userinterface#_command-palette):

   * Палитра команд: откройте палитру команд VS Code (Shift + Command + P (Mac) / Ctrl + Shift + P (Windows/Linux)) и найдите команду [**dbt: Compare changes**](vscode://dbtLabsInc/dbt.compareModel)
   * Нижняя панель: перейдите на вкладку **Compare**, затем нажмите кнопку **Compare**.

   [![Сравнение изменений при разработке](/img/docs/extension/vs-compare-changes-options.png?v=2 "Сравнение изменений при разработке")](#)Сравнение изменений при разработке

4. После нажатия кнопки **Compare** расширение выполнит команду `dbt build`, чтобы построить модель, над которой вы работаете, а затем запустит сравнение. На [вкладке **Compare**](#compare-tab) отображаются изменения первичных ключей, строк и столбцов данных. Переключаясь между вкладками, можно просмотреть подробности изменений, например конкретные добавленные или изменённые столбцы.

5. После сравнения и просмотра изменений на вкладке **Compare** вы можете решить, зафиксировать изменения в коммите или продолжить редактирование.

## Результаты на вкладке Compare

На вкладке **Compare** отображаются изменения первичных ключей, строк и столбцов данных. Переключаясь между вкладками, можно просмотреть подробности изменений, например конкретные добавленные или изменённые столбцы.

[![Пример вкладки Compare](/img/docs/extension/vs-compare-changes-tab.png?v=2 "Пример вкладки Compare")](#)Пример вкладки Compare

* **Вкладка Overview**: общая сводка изменений моделей, например количество добавленных или удалённых первичных ключей, изменённых строк и так далее. Также содержит сведения о связи между добавленными или изменёнными моделями.
* **Вкладка Primary keys**: подробные сведения об изменениях записей.
* **Вкладка Modified rows**: подробные сведения об изменённых строках.
* **Вкладка Columns**: подробные сведения об изменениях столбцов.

## Часто задаваемые вопросы

 Выполняются ли запросы от имени разработчика?

Да. Все запросы сравнения при разработке выполняются непосредственно из расширения dbt для VS Code с использованием ваших учётных данных для разработки или пользовательских учётных данных платформы. Если вы прошли аутентификацию с помощью файла [`dbt_cloud.yml`](https://docs.getdbt.tech/reference/dbt_cloud.yml.md), используются учётные данные, заданные в разделе **Account settings**; в противном случае используются учётные данные из вашего активного профиля dbt. dbt v2 использует ваши учётные данные для выполнения запросов сравнения в хранилище данных. Результаты хранятся в памяти, чтобы они оставались на вкладке Compare для этого файла до повторного запуска сравнения.

 Расходуются ли при этом кредиты моего хранилища данных?

Да. Поскольку сравнение выполняется в вашей среде разработки с использованием ваших учётных данных для разработки, оно задействует вычислительные ресурсы вашего хранилища данных.

 Нужно ли запускать dbt build после каждого изменения?

Нет. Когда вы нажимаете **Compare**, расширение автоматически строит модель в вашей схеме разработки, поэтому запускать `dbt build` самостоятельно не нужно. Затем оно сравнивает построенную модель из среды разработки с версией в среде, используемой для deferral (обычно staging или продакшен).

Если модель ещё не была построена в среде, используемой для deferral, выполнить сравнение не получится. Подробнее см. в разделе [Deferral на продакшен-среду](https://docs.getdbt.tech/docs/platform/about-defer.md).

 Чем это отличается от сравнения изменений в Advanced CI?

Функция сравнения изменений в расширении dbt для VS Code применима только к вашей самостоятельно размещённой среде разработки dbt. Если вам нужно сравнить изменения между продакшен-средой и последним коммитом пул-реквеста, см. [Сравнение изменений в Advanced CI](https://docs.getdbt.tech/docs/deploy/advanced-ci.md#compare-changes).

| Аспект                       | При разработке (сравнение изменений)                                              | При развертывании (Advanced CI)                                                                                                    |
| ---------------------------- | --------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| **Область действия**         | Разработка: одна измененная модель за раз                                         | Развертывание: все измененные модели проекта                                                                                       |
| **Запуск**                   | По запросу в редакторе                                                            | Открытие/обновление PR и задание CI                                                                                                |
| **Область сравнения**        | Ваша рабочая копия и локальное целевое окружение                                  | Последний коммит ветки и состояние продакшена в CI                                                                                 |
| Расположение **результатов** | Панель сравнения в VS Code/Cursor. Комментарий к PR в Git-провайдере не создается | Вкладка сравнения задания развертывания и комментарий со сводкой в PR в Git-провайдере                                             |
| **Кэширование данных**       | На стороне редактора                                                              | Платформа dbt [кэширует](https://docs.getdbt.tech/docs/deploy/advanced-ci.md#about-the-cached-data) выборки ограниченного размера |
| **Управление доступом**      | Локальные учетные данные для разработки                                           | Учетные данные продакшена                                                                                                          |

## Связанная документация

* [Сравнение изменений в Advanced CI](https://docs.getdbt.tech/docs/deploy/advanced-ci.md#compare-changes)
