# Проверка изменений dbt с помощью dbt Wizard

Используйте dbt Wizard, чтобы оценить влияние изменения, выбрать глубину проверки и изучить её результаты перед слиянием.

Этот рабочий процесс полезен, если вы изменили модель, тест, макрос или YAML-файл и хотите не только проверить код. dbt Wizard может использовать метаданные проекта, команды dbt, сборки в среде разработки и сравнения с продакшеном в зависимости от выбранного уровня проверки.

Рабочий процесс в CLI

Уровни проверки, описанные на этой странице, доступны в CLI dbt Wizard. Элементы управления проверкой в dbt platform могут отличаться. Подробнее о поведении на платформе см. в разделе [dbt Wizard в dbt platform](https://docs.getdbt.tech/docs/platform/wizard-platform.md).

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

Прежде чем начать:

* [Установите и настройте CLI dbt Wizard](https://docs.getdbt.tech/docs/dbt-ai/wizard-cli.md).
* Откройте свой проект dbt в терминале и запустите dbt Wizard из корневого каталога проекта.
* Убедитесь, что в проекте есть актуальный файл `target/manifest.json`. При необходимости выполните `dbt parse`, `dbt compile` или `dbt build`.
* Настройте целевую среду разработки, которую dbt Wizard сможет использовать для команд, запрашивающих или материализующих данные.
* Проверьте состояние Git, чтобы понимать, какие изменения относятся к задаче.

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

## Изучите изменение и его влияние

Сначала попросите dbt Wizard определить область проверки, прежде чем запускать команды или редактировать файлы:

```text
Review my uncommitted changes. Explain which dbt resources changed, trace their
downstream impact, and propose a validation plan. Do not edit files yet.
```

Для целенаправленной проверки укажите ресурс и поведение, которое должно остаться неизменным:

```text
Validate the changes to fct_orders. Its grain must remain one row per order,
order_total must not change for completed orders, and downstream finance models
must still compile. Show me the validation plan before running it.
```

dbt Wizard использует граф проекта и изменённые файлы, чтобы определить затронутые модели, тесты и нижестоящие ресурсы. Внимательно изучите эту область проверки. Добавьте любые бизнес-инварианты, которые нельзя вывести из SQL или метаданных.

## Выберите уровень проверки

Когда dbt Wizard спросит, насколько тщательно нужно проверить изменение, выберите уровень, соответствующий рискам и затратам.

| Уровень | Что проверяет dbt Wizard                                                                                                                                                                                                                          | Когда использовать                                                                                       |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| Light   | Проверяет синтаксис SQL, выполняет линтинг изменённых файлов, если он поддерживается, запускает целевые тесты dbt и проверяет код. Не материализует изменённые модели.                                                                            | Вы внесли изменение с низким риском и хотите быстро получить обратную связь.                             |
| Medium  | Выполняет компиляцию и линтинг, запускает целевые тесты, материализует изменённые модели в среде разработки и проверяет затронутые нижестоящие ресурсы. Это уровень по умолчанию.                                                                 | Вы изменили логику модели и хотите проверить результат в среде разработки.                               |
| Heavy   | Выполняет проверку уровня Medium, формулирует явные ожидания, сравнивает результаты среды разработки и продакшена и сообщает количество строк, различия схем, примеры записей и влияние на нижестоящие ресурсы, если необходимые данные доступны. | Изменение затрагивает гранулярность, финансовую логику, контракты или другое поведение с высоким риском. |
| Skip    | Не запускает структурированный процесс проверки.                                                                                                                                                                                                  | Вам нужен только черновик или вы планируете выполнить проверку другим способом.                          |

Конкретные команды зависят от движка dbt, проекта, адаптера и выбранных ресурсов. dbt Wizard может использовать такие команды, как `dbt compile`, `dbt lint`, `dbt test`, `dbt run` и `dbt build`. Линтинг доступен не во всех окружениях dbt CLI.

## Подтверждайте команды и отслеживайте их выполнение

Прежде чем подтвердить команду, проверьте следующее:

* Выбранные модели и глубина обхода нижестоящих зависимостей соответствуют запланированной области проверки.
* Целевая среда указывает на схему разработки, если вы намеренно не одобрили другую целевую среду.
* Настройки deferral и state указывают на ожидаемое окружение.
* Сравнение с продакшеном выполняется только для чтения и использует нужные объекты данных продакшена.
* Ожидаемые затраты на ресурсы хранилища и время выполнения соразмерны изменению.

Вы можете скорректировать план в любой момент. Например:

```text
Do not build every downstream model. Build fct_orders and its first-degree
children, then compile the rest of the downstream graph.
```

## Изучите результаты проверки

Полезная сводка проверки должна отделять подтверждённые результаты от неустранённых рисков. Убедитесь, что она включает:

* Ресурсы и команды, для которых выполнялась проверка.
* Результаты компиляции, линтинга, выполнения и тестирования.
* Различия между средой разработки и продакшеном, если вы выбрали уровень проверки Heavy.
* Нижестоящие ресурсы, которые не запускались и не проверялись.
* Ошибки, предупреждения, пропущенные проверки и причину каждого пропуска.
* Все допущения, которые ещё должен подтвердить эксперт в предметной области.

Если проверка завершилась ошибкой, попросите dbt Wizard выяснить причину, прежде чем изменять тест или ожидаемый результат:

```text
Explain whether this failure is caused by my code, existing warehouse data,
or the validation environment. Do not weaken or remove the test.
```

## Учитывайте ограничения

Проверка даёт подтверждающие данные, но не гарантирует корректность изменения. Помните о следующих ограничениях:

* Успешная компиляция не подтверждает корректность бизнес-логики или результатов в хранилище данных.
* Тесты охватывают только те утверждения, которые заданы в проекте.
* Для сравнения среды разработки с продакшеном необходимы доступные объекты данных с сопоставимыми схемами и данными.
* Примеры записей могут выявить различия, но не доказывают корректность всех строк.
* Внешние потребители данных не учитываются, если они не представлены в метаданных dbt или другом подключённом инструменте.
* Пропущенные проверки должны оставаться явно отмеченными при проверке изменений и в примечаниях к pull request.

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

* [Изучение проекта dbt с помощью dbt Wizard](https://docs.getdbt.tech/best-practices/how-to-use-wizard/wizard-2-understand-project.md)
* [Как работает dbt Wizard](https://docs.getdbt.tech/docs/dbt-ai/wizard-how-it-works.md)
* [Использование субагентов в CLI dbt Wizard](https://docs.getdbt.tech/docs/dbt-ai/wizard-subagents.md)
* [О состоянии dbt](https://docs.getdbt.tech/docs/deploy/dbt-state-about.md)
