Проверка изменений dbt с помощью dbt Wizard
Используйте dbt Wizard, чтобы оценить влияние изменения, выбрать глубину проверки и изучить её результаты перед слиянием.
Этот рабочий процесс полезен, если вы изменили модель, тест, макрос или YAML-файл и хотите не только проверить код. dbt Wizard может использовать метаданные проекта, команды dbt, сборки в среде разработки и сравнения с продакшеном в зависимости от выбранного уровня проверки.
Уровни проверки, описанные на этой странице, доступны в CLI dbt Wizard. Элементы управления проверкой в dbt platform могут отличаться. Подробнее о поведении на платформе см. в разделе dbt Wizard в dbt platform.
Предварительные требования
Прежде чем начать:
- Установите и настройте CLI dbt Wizard.
- Откройте свой проект dbt в терминале и запустите dbt Wizard из корневого каталога проекта.
- Убедитесь, что в проекте есть актуальный файл
target/manifest.json. При необходимости выполнитеdbt parse,dbt compileилиdbt build. - Настройте целевую среду разработки, которую dbt Wizard сможет использовать для команд, запрашивающих или материализующих данные.
- Проверьте состояние Git, чтобы понимать, какие изменения относятся к задаче.
Проверка в хранилище данных может потреблять вычислительные ресурсы. Перед выполнением команд dbt Wizard показывает их для подтверждения в соответствии с политикой вашего сеанса.
Изучите изменение и его влияние
Сначала попросите dbt Wizard определить область проверки, прежде чем запускать команды или редактировать файлы:
Review my uncommitted changes. Explain which dbt resources changed, trace their
downstream impact, and propose a validation plan. Do not edit files yet.
Для целенаправленной проверки укажите ресурс и поведение, которое должно остаться неизменным:
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 указывают на ожидаемое окружение.
- Сравнение с продакшеном выполняется только для чтения и использует нужные объекты данных продакшена.
- Ожидаемые затраты на ресурсы хранилища и время выполнения соразмерны изменению.
Вы можете скорректировать план в любой момент. Например:
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 выяснить причину, прежде чем изменять тест или ожидаемый результат:
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
- Как работает dbt Wizard
- Использование субагентов в CLI dbt Wizard
- О состоянии dbt