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

Предупреждения

Используйте флаг --warn-error, чтобы повышать все предупреждения до ошибок, или --warn-error-options для более детального управления через параметры.

Используйте --warn-error, чтобы повысить все предупреждения до ошибок

Включение конфигурации WARN_ERROR или установка флага --warn-error приведёт к тому, что все предупреждения dbt будут преобразованы в ошибки. Каждый раз, когда dbt обычно выдаёт предупреждение, вместо этого будет выброшена ошибка. Примеры таких ситуаций включают: критерии --select, которые не выбирают ни одного ресурса, устаревшие (deprecated) элементы, конфигурации без связанных моделей, некорректные конфигурации тестов, а также тесты и проверки свежести данных, которые настроены на возврат предупреждений.

Usage
dbt run --warn-error
Осторожно при использовании в продакшене

Использование флага --warn-error или --warn-error-options '{"error": "all"}' приведёт к тому, что все текущие и будущие предупреждения будут трактоваться как ошибки.

Это означает, что если в будущей версии dbt Core появится новое предупреждение, ваш продакшен‑джоб может начать неожиданно падать. Мы рекомендуем с осторожностью использовать этот подход в продакшен‑средах и явно перечислять только те предупреждения, которые вы хотите считать ошибками в продакшене.

:::

Используйте --warn-error-options для целевых предупреждений

В некоторых случаях вы можете захотеть преобразовать все предупреждения в ошибки. Однако, когда вы хотите, чтобы некоторые предупреждения оставались предупреждениями и повышать или подавлять только конкретные предупреждения, вы можете вместо этого использовать --warn-error-options. Конфигурация WARN_ERROR_OPTIONS или флаг --warn-error-options дают вам более детальный контроль над тем, какие именно типы предупреждений считаются ошибками.

WARN_ERROR и WARN_ERROR_OPTIONS являются взаимоисключающими

WARN_ERROR и WARN_ERROR_OPTIONS являются взаимоисключающими. Вы можете указать только один из них, даже если вы задаёте конфигурацию в нескольких местах (например, через переменную окружения или флаг), иначе вы увидите ошибку использования.

Предупреждения, которые следует рассматривать как ошибки, можно указать через параметр error. Имена предупреждений можно найти в:

  • файле types.py в dbt-core, где каждое имя класса, наследующегося от WarnLevel, соответствует имени предупреждения (например, AdapterDeprecationWarning, NoNodesForSelectionCriteria).
  • Используя флаг --log-format json.

Параметр error может быть установлен в значение "all" или "*", чтобы рассматривать все предупреждения как ошибки (это поведение эквивалентно использованию флага --warn-error), либо в список конкретных имён предупреждений, которые следует рассматривать как исключения.

  • When error is set to "all" or "*", the optional warn parameter can be set to exclude specific warnings from being treated as exceptions.
  • Используйте параметр silence, чтобы игнорировать предупреждения. Чтобы подавить определённые предупреждения, которые вы хотите игнорировать, вы можете указать их в параметре silence. Это полезно в крупных проектах, где некоторые предупреждения не являются критичными и могут быть проигнорированы, чтобы снизить уровень шума и сохранить логи чистыми.

Вот как вы можете использовать флаг --warn-error-options, чтобы повышать конкретные предупреждения до ошибок:

  • Предупреждения тестов с флагом --warn-error-options '{"error": ["LogTestResult"]}'.
  • Jinja предупреждения об исключениях с --warn-error-options '{"error": ["JinjaLogWarning"]}'.
  • Отсутствие выбранных узлов с --warn-error-options '{"error": ["NoNodesForSelectionCriteria"]}'.
  • Предупреждения об устаревании с --warn-error-options '{"error": ["Deprecations"]}' (новое в v1.10).

Конфигурация

Вы можете настраивать предупреждения как ошибки или определять, какие предупреждения следует подавлять, с помощью warn error options через флаг командной строки, переменную окружения или dbt_project.yml.

You can choose to:

  • Повышайте все предупреждения до ошибок, используя {"error": "all"} или флаг --warn-error.
  • Повышайте конкретные предупреждения до ошибок, используя error, и при необходимости исключайте другие из обработки как ошибки с помощью флага --warn-error-options. warn указывает dbt продолжать обрабатывать предупреждения как предупреждения.
  • Игнорируйте предупреждения, используя silence с флагом --warn-error-options.

В следующем примере мы подавляем предупреждение NoNodesForSelectionCriteria в файле dbt_project.yml, добавляя его в параметр silence:

dbt_project.yml
...
flags:
warn_error_options:
error: # ранее называлось "include"
warn: # ранее называлось "exclude"
silence: # чтобы заглушать или игнорировать предупреждения
- NoNodesForSelectionCriteria

Примеры

Вот несколько примеров, которые показывают, как настроить warn_error_options с помощью флагов или файловой конфигурации.

Целевые предупреждения

В некоторых примерах используется NoNodesForSelectionCriteria — это конкретное предупреждение, которое возникает, когда ваш флаг --select не соответствует ни одному узлу/ресурсу в вашем проекте dbt:

  • Эта команда повышает все предупреждения до ошибок, за исключением NoNodesForSelectionCriteria:

    dbt run --warn-error-options '{"error": "all", "warn": ["NoNodesForSelectionCriteria"]}'
  • Эта команда повышает все предупреждения до ошибок, за исключением предупреждений об устаревании:

    dbt run --warn-error-options '{"error": "all", "warn": ["Deprecations"]}'
  • Эта команда повышает только NoNodesForSelectionCriteria до уровня ошибки:

    dbt run --warn-error-options '{"error": ["NoNodesForSelectionCriteria"]}'
  • Это повышает только NoNodesForSelectionCriteria до уровня ошибки, используя переменную окружения:

    DBT_WARN_ERROR_OPTIONS='{"error": ["NoNodesForSelectionCriteria"]}' dbt run

Значения для error, warn и/или silence должны передаваться в виде массивов. Например, dbt run --warn-error-options '{"error": "all", "warn": ["NoNodesForSelectionCriteria"]}', а не dbt run --warn-error-options '{"error": "all", "warn": "NoNodesForSelectionCriteria"}'.

Следующий пример показывает, как повысить все предупреждения до ошибок, за исключением предупреждения NoNodesForSelectionCriteria, используя параметры silence и warn в файле dbt_project.yml:

dbt_project.yml
...
flags:
warn_error_options:
error: all # ранее называлось "include"
warn: # ранее называлось "exclude"
- NoNodesForSelectionCriteria
silence: # чтобы заглушать или игнорировать предупреждения
- NoNodesForSelectionCriteria

Повышение всех предупреждений до ошибок

Несколько примеров того, как повысить все предупреждения до ошибок:

используя флаги команд dbt
dbt run --warn-error
dbt run --warn-error-options '{"error": "all"}'
dbt run --warn-error-options '{"error": "*"}'
используя переменные окружения
WARN_ERROR=true dbt run 
DBT_WARN_ERROR_OPTIONS='{"error": "all"}' dbt run
DBT_WARN_ERROR_OPTIONS='{"error": "*"}' dbt run
предупреждение

Обратите внимание: использование warn_error_options: error: "all" приведёт к тому, что все текущие и будущие предупреждения будут обрабатываться как ошибки.

Это означает, что если в будущей версии dbt Core появится новое предупреждение, ваш production‑запуск может неожиданно начать завершаться с ошибкой. Мы рекомендуем использовать этот подход в production‑окружениях с осторожностью и явно перечислять только те предупреждения, которые вы хотите считать ошибками в production.

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

0
Loading