Перейти к основному содержимому

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

к сведению

Для сравнения изменений требуется базовое состояние — либо механизм deferral в dbt platform, который использует ваш аккаунт dbt platform, либо локальный файл manifest.json, для которого аккаунт не нужен.

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

Используйте сравнение изменений, чтобы заранее оценить их влияние и проверить результат перед созданием PR или запуском задания CI:

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

Функция сравнения изменений в расширении dbt для VS Code отличается от функции сравнения изменений в Advanced CI, которая запускается на этапе PR при развёртывании, а не локально при разработке.

к сведению

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

Внесите изменения в модель и просмотрите их на вкладке CompareВнесите изменения в модель и просмотрите их на вкладке Compare

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

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

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

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

  • Если вы используете deferral в dbt platform (рекомендуется): Войдите в аккаунт dbt platform. Также вам потребуется файл dbt_cloud.yml в локальном каталоге .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 не требуется; запуск задания также не нужен.

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

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

  1. Откройте SQL-файл модели в редакторе.
  2. Внесите изменения в модель, например добавьте новый столбец или измените существующий (например, left_join_customers на right_join_customers).
  3. Запустите сравнение изменений в интерфейсе VS Code:
    • Палитра команд: откройте палитру команд VS Code (Shift + Command + P (Mac) / Ctrl + Shift + P (Windows/Linux)) и найдите команду dbt: Compare changes
    • Нижняя панель: перейдите на вкладку Compare, затем нажмите кнопку Compare.
    Сравнение изменений при разработкеСравнение изменений при разработке
  4. После нажатия кнопки Compare расширение выполнит команду dbt build, чтобы построить модель, над которой вы работаете, а затем запустит сравнение. На вкладке Compare отображаются изменения первичных ключей, строк и столбцов данных. Переключаясь между вкладками, можно просмотреть подробности изменений, например конкретные добавленные или изменённые столбцы.
  5. После сравнения и просмотра изменений на вкладке Compare вы можете решить, зафиксировать изменения в коммите или продолжить редактирование.

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

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

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

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

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

Да. Все запросы сравнения при разработке выполняются непосредственно из расширения dbt для VS Code с использованием ваших учётных данных для разработки или пользовательских учётных данных платформы. Если вы прошли аутентификацию с помощью файла dbt_cloud.yml, используются учётные данные, заданные в разделе Account settings; в противном случае используются учётные данные из вашего активного профиля dbt. dbt v2 использует ваши учётные данные для выполнения запросов сравнения в хранилище данных. Результаты хранятся в памяти, чтобы они оставались на вкладке Compare для этого файла до повторного запуска сравнения.

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

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

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

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

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

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

Функция сравнения изменений в расширении dbt для VS Code применима только к вашей самостоятельно размещённой среде разработки dbt. Если вам нужно сравнить изменения между продакшен-средой и последним коммитом пул-реквеста, см. Сравнение изменений в Advanced CI.

АспектПри разработке (сравнение изменений)При развертывании (Advanced CI)
Область действияРазработка: одна измененная модель за разРазвертывание: все измененные модели проекта
ЗапускПо запросу в редактореОткрытие/обновление PR и задание CI
Область сравненияВаша рабочая копия и локальное целевое окружениеПоследний коммит ветки и состояние продакшена в CI
Расположение результатовПанель сравнения в VS Code/Cursor. Комментарий к PR в Git-провайдере не создаетсяВкладка сравнения задания развертывания и комментарий со сводкой в PR в Git-провайдере
Кэширование данныхНа стороне редактораПлатформа dbt кэширует выборки ограниченного размера
Управление доступомЛокальные учетные данные для разработкиУчетные данные продакшена

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

Нашли ошибку?

0
Loading