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

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

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

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

Вы можете использовать флаги с движком dbt v2 или dbt v1 через CLI при локальной разработке или в dbt platform.

Флаги dbt и параметры командной строки dbt во многом пересекаются, но между ними есть различия:

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

Вы можете настраивать флаги в dbt_project.yml, с помощью переменных окружения и параметров CLI. Подробности см. в разделе Настройка с помощью переменных окружения.

Настройка флагов​

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

Наиболее конкретная настройка имеет приоритет. Наивысший приоритет имеют параметры CLI, затем идут переменные окружения, далее — dbt_project.yml и, наконец, user_settings.yml. Если флаг не задан ни в одном из этих мест, используется значение по умолчанию, определённое в dbt.

# dbt_project.yml
flags:
# значение по умолчанию для запуска этого проекта — везде, всегда, для всех
fail_fast: true
(Версии dbt: v1.11 и новее)
# установите для этой переменной окружения значение 'True' (синтаксис bash)
export DBT_ENGINE_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: v1.11 и новее) DBT_ENGINE_LOG_PATH и DBT_ENGINE_STATE). Флаги, указывающие dbt, где искать ресурсы проекта (например, model-paths), задаются в dbt_project.yml, но в виде ключей верхнего уровня, вне словаря flags; эти настройки должны быть полностью статичными и никогда не меняться в зависимости от команды или среды выполнения.
  2. Флаги включения изменений поведения: Флаги, включающие или отключающие изменения поведения, можно задавать только в 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 dbt: Указывает, поддерживается ли флаг в CLI, поддерживаемом dbt platform.
  • Тип / значение по умолчанию: Показывает допустимый тип значения и значение по умолчанию.
  • В проекте: Указывает, можно ли задать флаг в dbt_project.yml.
  • Переменная окружения: Показывает имя соответствующей переменной окружения, если она доступна. Как правило, в версии v1.10 и более ранних используется префикс DBT_, а в v1.11 и более поздних — префикс DBT_ENGINE_.
  • Флаги CLI: Перечисляет параметры командной строки для задания флага на конкретный запуск.
(Версии dbt: v1.11 и новее)
Flagdbt CLI?Type / defaultIn project?Env var
CLI flags
ai_provider (v2.0+)❌list
default: None
✅DBT_ENGINE_AI_PROVIDER--ai-provider
batch_tests (v2.0+)❌boolean
default: False
✅DBT_ENGINE_BATCH_TESTS--batch-tests
cache_selected_only✅boolean
default: False
✅DBT_ENGINE_CACHE_SELECTED_ONLY--cache-selected-only
--no-cache-selected-only
clean_project_files_only❌boolean
default: True
❌DBT_ENGINE_CLEAN_PROJECT_FILES_ONLY--clean-project-files-only
--no-clean-project-files-only
debug✅boolean
default: False
✅DBT_ENGINE_DEBUG--debug
--no-debug
defer✅ (default)boolean
default: False
❌DBT_ENGINE_DEFER--defer
--no-defer
defer_state❌path
default: None
❌DBT_ENGINE_DEFER_STATE--defer-state
favor_state✅boolean
default: False
❌DBT_ENGINE_FAVOR_STATE--favor-state
--no-favor-state
empty✅boolean
default: False
❌DBT_ENGINE_EMPTY--empty
--no-empty
event_time_start✅datetime
default: None
❌DBT_ENGINE_EVENT_TIME_START--event-time-start
event_time_end✅datetime
default: None
❌DBT_ENGINE_EVENT_TIME_END--event-time-end
fail_fast✅boolean
default: False
✅DBT_ENGINE_FAIL_FAST--fail-fast
-x
--no-fail-fast
full_refresh✅boolean
default: False
✅ (as resource config)DBT_ENGINE_FULL_REFRESH--full-refresh
--no-full-refresh
generate_info_schema (v2.0+)✅boolean
default: False
❌DBT_ENGINE_GENERATE_INFO_SCHEMA--generate-info-schema
hints_enabled (v1.12+)✅boolean
default: True
✅DBT_ENGINE_HINTS_ENABLED--hints-enabled
--no-hints-enabled
indirect_selection❌enum
default: eager
✅DBT_ENGINE_INDIRECT_SELECTION--indirect-selection
info_schema_dir (v2.0+)✅path
default: None (uses <target>/info_schema/)
❌DBT_ENGINE_INFO_SCHEMA_DIR--info-schema-dir
introspect❌boolean
default: True
❌DBT_ENGINE_INTROSPECT--introspect
--no-introspect
log_cache_events❌boolean
default: False
❌DBT_ENGINE_LOG_CACHE_EVENTS--log-cache-events
--no-log-cache-events
log_format_file❌enum
default: default (text)
✅DBT_ENGINE_LOG_FORMAT_FILE--log-format-file
log_format❌enum
default: default (text)
✅DBT_ENGINE_LOG_FORMAT--log-format
log_level_file❌enum
default: debug
✅DBT_ENGINE_LOG_LEVEL_FILE--log-level-file
log_level❌enum
default: info
✅DBT_ENGINE_LOG_LEVEL--log-level
log_path❌path
default: None (uses logs/)
❌DBT_ENGINE_LOG_PATH--log-path
manage_state (v1.13+)✅boolean
default: False
✅DBT_ENGINE_MANAGE_STATE--manage-state
--no-manage-state
partial_parse✅boolean
default: True
✅DBT_ENGINE_PARTIAL_PARSE--partial-parse
--no-partial-parse
populate_cache✅boolean
default: True
✅DBT_ENGINE_POPULATE_CACHE--populate-cache
--no-populate-cache
print❌boolean
default: True
❌DBT_ENGINE_PRINT--print
--no-print
printer_width❌int
default: 80
✅DBT_ENGINE_PRINTER_WIDTH--printer-width
profile❌string
default: None
✅ (as top-level key)DBT_ENGINE_PROFILE--profile
profiles_dir❌path
default: None (current dir, then HOME dir)
❌DBT_ENGINE_PROFILES_DIR--profiles-dir
project_dir❌path
default: (empty)
❌DBT_ENGINE_PROJECT_DIR--project-dir
quiet✅boolean
default: False
❌DBT_ENGINE_QUIET--quiet
resource-type (v1.8+)✅string
default: None
❌DBT_ENGINE_RESOURCE_TYPES
DBT_ENGINE_EXCLUDE_RESOURCE_TYPES
--resource-type
--exclude-resource-type
sample✅string
default: None
❌DBT_ENGINE_SAMPLE--sample
send_anonymous_usage_stats❌boolean
default: True
✅DBT_ENGINE_SEND_ANONYMOUS_USAGE_STATS--send-anonymous-usage-stats
--no-send-anonymous-usage-stats
source_freshness_run_project_hooks❌boolean
default: True
✅❌❌
sqlparse❌YAML map
default: MAX_GROUPING_DEPTH and MAX_GROUPING_TOKENS set to null
❌DBT_ENGINE_SQLPARSE--sqlparse
state❌path
default: none
❌DBT_ENGINE_STATE, DBT_ENGINE_DEFER_STATE--state
--defer-state
static_parser❌boolean
default: True
✅DBT_ENGINE_STATIC_PARSER--static-parser
--no-static-parser
store_failures✅boolean
default: False
✅ (as resource config)DBT_ENGINE_STORE_FAILURES--store-failures
--no-store-failures
target_path❌path
default: None (uses target/)
❌DBT_ENGINE_TARGET_PATH--target-path
target❌string
default: None
❌DBT_ENGINE_TARGET--target
use_colors_file❌boolean
default: True
✅DBT_ENGINE_USE_COLORS_FILE--use-colors-file
--no-use-colors-file
use_colors❌boolean
default: True
✅DBT_ENGINE_USE_COLORS--use-colors
--no-use-colors
use_experimental_parser❌boolean
default: False
✅DBT_ENGINE_USE_EXPERIMENTAL_PARSER--use-experimental-parser
--no-use-experimental-parser
use_fast_test_edges✅boolean
default: False
❌DBT_ENGINE_USE_FAST_TEST_EDGES--use-fast-test-edges
--no-use-fast-test-edges
use_v2_parser✅boolean
default: False
✅DBT_ENGINE_USE_V2_PARSER--use-v2-parser
version_check❌boolean
default: varies
✅DBT_ENGINE_VERSION_CHECK--version-check
--no-version-check
warn_error_options✅dict
default:
✅DBT_ENGINE_WARN_ERROR_OPTIONS--warn-error-options
warn_error✅boolean
default: False
✅DBT_ENGINE_WARN_ERROR--warn-error
write_json✅boolean
default: True
✅DBT_ENGINE_WRITE_JSON--write-json
--no-write-json

Примеры распространённых флагов​

Флаг --target задаёт целевую среду для команд dbt. Например:

dbt run --target dev
dbt run --target prod
dbt build --target staging

Флаг --target позволяет запускать один проект dbt в разных средах без изменения конфигурационных файлов. Определите целевую среду в profiles.yml. Подробнее см. Профили подключения и целевые среды.

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

0
Loading