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

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

В dbt "флаги" (также называемые "глобальными конфигурациями") — это настройки для тонкой настройки как dbt выполняет ваш проект. Они отличаются от конфигураций, специфичных для ресурсов, которые сообщают dbt что выполнять.

Флаги управляют такими вещами, как визуальный вывод логов, следует ли рассматривать определенные предупреждения как ошибки, или следует ли "быстро завершать" выполнение после первой ошибки. Флаги являются "глобальными" конфигурациями, потому что они доступны для всех команд dbt и могут быть установлены в нескольких местах.

Существует значительное пересечение между флагами dbt и опциями командной строки dbt, но есть различия:

  • Некоторые флаги могут быть установлены только в dbt_project.yml и не могут быть переопределены для конкретных вызовов через опции CLI.
  • Если опция CLI поддерживается конкретными командами, а не всеми командами ("глобально"), она обычно не считается "флагом".

Установка флагов

Существует несколько способов установки флагов, которые зависят от случая использования:

Наиболее специфичная настройка "побеждает". Если вы установите один и тот же флаг во всех трех местах, опция 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. Флаги выбора: Флаги выбора или отказа от изменений поведения могут быть определены только в dbt_project.yml. Они предназначены для установки в системе контроля версий и миграции через pull/merge запросы. Их значения не должны бесконечно расходиться между вызовами, средами или пользователями.

Доступ к флагам

Пользовательская логика, написанная на Jinja, может проверять значения флагов, используя контекстную переменную flags.

# dbt_project.yml

on-run-start:
- '{{ log("Я остановлюсь при первом признаке проблемы", info = true) if flags.FAIL_FAST }}'

Поскольку значения flags могут различаться между вызовами, мы настоятельно не рекомендуем использовать flags в качестве входных данных для конфигураций или зависимостей (ref + source), которые dbt разрешает во время парсинга.

Доступные флаги

Название флагаТипЗначение по умолчаниюПоддерживается в проекте?Переменная окруженияОпция командной строкиПоддерживается в Cloud CLI?
cache_selected_onlybooleanFalseDBT_CACHE_SELECTED_ONLY--cache-selected-only, --no-cache-selected-only
debugbooleanFalseDBT_DEBUG--debug, --no-debug
deferbooleanFalseDBT_DEFER--defer, --no-defer✅ (включено по умолчанию)
defer_statepathNoneDBT_DEFER_STATE--defer-state
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
printer_widthint80DBT_PRINTER_WIDTH--printer-width
profilestringNone✅ (как ключ верхнего уровня)DBT_PROFILE--profile
profiles_dirpathNone (текущая директория, затем домашняя директория)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
send_anonymous_usage_statsbooleanTrueDBT_SEND_ANONYMOUS_USAGE_STATS--send-anonymous-usage-stats, --no-send-anonymous-usage-stats
source_freshness_run_project_hooksbooleanFalse
statepathnoneDBT_STATE, DBT_DEFER_STATE--state, --defer-state
static_parserbooleanTrueDBT_STATIC_PARSER--static-parser, --no-static-parser
store_failuresbooleanFalse✅ (как конфигурация ресурса)DBT_STORE_FAILURES--store-failures, --no-store-failures
target_pathpathNone (использует target/)DBT_TARGET_PATH--target-path
targetstringNoneDBT_TARGET--target
use_colors_filebooleanTrueDBT_USE_COLORS_FILE--use-colors-file, --no-use-colors-file
use_colorsbooleanTrueDBT_USE_COLORS--use-colors, --no-use-colors
use_experimental_parserbooleanFalseDBT_USE_EXPERIMENTAL_PARSER--use-experimental-parser, --no-use-experimental-parser
version_checkbooleanvariesDBT_VERSION_CHECK--version-check, --no-version-check
warn_error_optionsdictDBT_WARN_ERROR_OPTIONS--warn-error-options
warn_errorbooleanFalseDBT_WARN_ERROR--warn-error
write_jsonbooleanTrueDBT_WRITE_JSON--write-json, --no-write-json
0