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

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

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

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

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

Уровни проверки, описанные на этой странице, доступны в 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.

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

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

0
Loading