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

О флагах (глобальные конфигурации)

В 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

Существует две категории исключений:

  1. Флаги, задающие пути к файлам: Флаги с путями к файлам, которые важны для выполнения во время запуска (например, --log-path или --state), нельзя задавать в dbt_project.yml. Чтобы переопределить значения по умолчанию, используйте опции CLI или переменные окружения (DBT_LOG_PATH, DBT_STATE). Флаги, которые указывают dbt, где искать ресурсы проекта (например, model-paths), задаются в dbt_project.yml, но как ключи верхнего уровня, вне словаря flags; предполагается, что такие настройки полностью статичны и никогда не меняются в зависимости от команды или среды выполнения.
  2. 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 разрешает во время парсинга.

Название флагаТипЗначение по умолчаниюПоддерживается в проекте?Переменная окружения
Опции CLI
Поддерживается в Cloud CLI?
cache_selected_onlybooleanFalseDBT_CACHE_SELECTED_ONLY--cache-selected-only, --no-cache-selected-only
clean_project_files_onlybooleanTrueDBT_CLEAN_PROJECT_FILES_ONLY--clean-project-files-only, --no-clean-project-files-only
debugbooleanFalseDBT_DEBUG--debug, --no-debug
deferbooleanFalseDBT_DEFER--defer, --no-defer✅ (default)
defer_statepathNoneDBT_DEFER_STATE--defer-state
favor_statebooleanFalseDBT_FAVOR_STATE--favor-state, --no-favor-state
emptybooleanFalseDBT_EMPTY--empty, --no-empty
event_time_startdatetimeNoneDBT_EVENT_TIME_START--event-time-start
event_time_enddatetimeNoneDBT_EVENT_TIME_END--event-time-end
fail_fastbooleanFalseDBT_FAIL_FAST--fail-fast, -x, --no-fail-fast
full_refreshbooleanFalse✅ (как конфигурация ресурса)DBT_FULL_REFRESH--full-refresh, --no-full-refresh
indirect_selectionenumeagerDBT_INDIRECT_SELECTION--indirect-selection
introspectbooleanTrueDBT_INTROSPECT--introspect, --no-introspect
log_cache_eventsbooleanFalseDBT_LOG_CACHE_EVENTS--log-cache-events, --no-log-cache-events
log_format_fileenumdefault (text)DBT_LOG_FORMAT_FILE--log-format-file
log_formatenumdefault (text)DBT_LOG_FORMAT--log-format
log_level_fileenumdebugDBT_LOG_LEVEL_FILE--log-level-file
log_levelenuminfoDBT_LOG_LEVEL--log-level
log_pathpathNone (использует logs/)DBT_LOG_PATH--log-path
partial_parsebooleanTrueDBT_PARTIAL_PARSE--partial-parse, --no-partial-parse
populate_cachebooleanTrueDBT_POPULATE_CACHE--populate-cache, --no-populate-cache
printbooleanTrueDBT_PRINT--print, --no-print
printer_widthint80DBT_PRINTER_WIDTH--printer-width
profilestringNone✅ (как ключ верхнего уровня)DBT_PROFILE--profile
profiles_dirpathNone (текущая директория, затем директория HOME)DBT_PROFILES_DIR--profiles-dir
project_dirpathDBT_PROJECT_DIR--project-dir
quietbooleanFalseDBT_QUIET--quiet
resource-type (v1.8+)stringNoneDBT_RESOURCE_TYPES
DBT_EXCLUDE_RESOURCE_TYPES
--resource-type
--exclude-resource-type
samplestringNoneDBT_SAMPLE--sample
send_anonymous_usage_statsbooleanTrueDBT_SEND_ANONYMOUS_USAGE_STATS--send-anonymous-usage-stats, --no-send-anonymous-usage-stats
source_freshness_run_project_hooksbooleanTrue
statepathnoneDBT_STATE, DBT_DEFER_STATE--state, --defer-state
static_parserbooleanTrueDBT_STATIC_PARSER--static-parser, --no-static-parser
store_failuresbooleanFalse✅ (as resource config)DBT_STORE_FAILURES--store-failures, --no-store-failures
target_pathpathNone (uses target/)DBT_TARGET_PATH--target-path
targetstringNoneDBT_TARGET--target
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...

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

0
Loading