О флагах (глобальные конфигурации)
В dbt "флаги" (также называемые "глобальными конфигурациями") — это настройки для тонкой настройки как dbt выполняет ваш проект. Они отличаются от конфигураций, специфичных для ресурсов, которые сообщают dbt что выполнять.
Флаги управляют такими вещами, как визуальный вывод логов, следует ли рассматривать определенные предупреждения как ошибки, или следует ли "быстро завершать" выполнение после первой ошибки. Флаги являются "глобальными" конфигурациями, потому что они доступны для всех команд dbt и могут быть установлены в нескольких местах.
Существует значительное пересечение между флагами dbt и опциями командной строки dbt, но есть различия:
- Некоторые флаги могут быть установлены только в
dbt_project.ymlи не могут быть переопределены для конкретных вызовов через опции CLI. - Если опция CLI поддерживается конкретными командами, а не всеми командами ("глобально"), она обычно не считается "флагом".
Установка флагов
Существует несколько способов задания флагов, выбор которых зависит от сценария использования:
- Флаги уровня проекта
flagsвdbt_project.yml: Определяют версионируемые значения по умолчанию для всех, кто запускает этот проект. Также позволяют включать или отключать изменения поведения, чтобы управлять миграцией с устаревшей функциональности. - Переменные окружения: Позволяют задавать разное поведение в разных средах выполнения (разработка vs. продакшн vs. continuous integration), а также разное поведение для разных пользователей в среде разработки (например, на основе личных предпочтений).
- Опции CLI: Определяют поведение, специфичное для данного запуска. Поддерживаются для всех команд dbt.
Всегда «побеждает» наиболее специфичная настройка. Если один и тот же флаг задан во всех трёх местах, приоритет будет следующим: сначала опция CLI, затем переменная окружения и, наконец, значение из dbt_project.yml. Если флаг не задан ни в одном из этих мест, будет использовано значение по умолчанию, определённое внутри dbt.
Большинство флагов можно задать всеми тремя способами:
# dbt_project.yml
flags:
# значение по умолчанию для запуска этого проекта — везде, всегда, для всех
fail_fast: true
# установить эту переменную окружения в значение 'True' (синтаксис bash)
export DBT_FAIL_FAST=1
dbt run
dbt run --fail-fast # установить True для этого конкретного запуска
dbt run --no-fail-fast # установить False
Существует две категории исключений:
- Флаги, задающие пути к файлам: Флаги с путями к файлам, которые важны для выполнения во время запуска (например,
--log-pathили--state), нельзя задавать вdbt_project.yml. Чтобы переопределить значения по умолчанию, используйте опции CLI или переменные окружения (DBT_LOG_PATH,DBT_STATE). Флаги, которые указывают dbt, где искать ресурсы проекта (например,model-paths), задаются вdbt_project.yml, но как ключи верхнего уровня, вне словаряflags; предполагается, что такие настройки полностью статичны и никогда не меняются в зависимости от команды или среды выполнения. - Opt-in флаги: Флаги, отвечающие за включение или отключение изменений поведения, могут быть определены только в
dbt_project.yml. Предполагается, что они задаются в системе контроля версий и изменяются через pull/merge request. Их значения не должны длительное время различаться между запусками, средами или пользователями.
Доступ к флагам
Пользовательская логика, написанная на Jinja, может проверять значения флагов, используя контекстную переменную flags.
# dbt_project.yml
on-run-start:
- '{{ log("Я остановлюсь при первом признаке проблемы", info = true) if flags.FAIL_FAST }}'
Доступные флаги
Поскольку значения flags могут отличаться между разными запусками, мы настоятельно не рекомендуем использовать flags в качестве входных данных для конфигураций или зависимостей (ref + source), которые dbt разрешает во время парсинга.
| Loading table... |
В данном фрагменте отсутствуют пояснительные тексты на английском языке — таблица состоит только из названий параметров, типов, значений по умолчанию и ссылок. В соответствии с требованиями, технические термины, параметры, имена переменных и примеры не переводятся, поэтому содержимое оставлено без изменений. | use_colors_file | boolean | True | ✅ |
DBT_USE_COLORS_FILE|--use-colors-file,--no-use-colors-file| ❌ | | use_colors | boolean | True | ✅ |DBT_USE_COLORS|--use-colors,--no-use-colors| ❌ | | use_experimental_parser | boolean | False | ✅ |DBT_USE_EXPERIMENTAL_PARSER|--use-experimental-parser,--no-use-experimental-parser| ❌ | | version_check | boolean | varies | ✅ |DBT_VERSION_CHECK|--version-check,--no-version-check| ❌ | | warn_error_options | dict | | ✅ |DBT_WARN_ERROR_OPTIONS|--warn-error-options| ✅ | | warn_error | boolean | False | ✅ |DBT_WARN_ERROR|--warn-error| ✅ | | write_json | boolean | True | ✅ |DBT_WRITE_JSON|--write-json,--no-write-json| ✅ |
| Loading table... |