dbt state explain
(Версии dbt: v2.0 и новее) dbt state explain — это команда CLI, доступная при включении dbt State. После завершения задания выполните эту команду, чтобы узнать, почему dbt State принял то или иное решение для каждого узла и был ли узел выполнен, пропущен или клонирован. Используйте её для проверки поведения State, отладки неожиданных пропусков или подтверждения того, что проверки актуальности данных и запросов работают должным образом.
dbt state explain
В выводе отображаются все узлы из последнего запуска с кратким описанием решения State для каждого из них:
SKIP_EXECUTION model.jaffle_shop.customers - model was a no-op because its query is up to date and its upstream data is within freshness tolerance
READY_TO_EXECUTE model.jaffle_shop.orders - model was executed because the view definition is newer than the cached execution
READY_TO_EXECUTE test.jaffle_shop.not_null_customers_customer_id - data test was executed because it has no prior execution or its query changed
UNKNOWN unit_test.jaffle_shop.orders.test_order_items_compute_to_bools_correctly - dbt State explain details unavailable
Если вы используете dbt platform, та же информация доступна без выполнения команды — перейдите на вкладку Explain на странице сведений о запуске задания, чтобы просмотреть подробное обоснование решения для каждого узла.
Указание файла журнала
По умолчанию (Версии dbt: v2.0 и новее) dbt state explain считывает данные последнего выполнения. Чтобы проанализировать предыдущий запуск, используйте --log-file (или -l) и укажите файл состояния из каталога logs/state/:
dbt state explain --log-file 'logs/state/responses_2026_08_25_11_00_15_667.jsonl'
Использование подробного режима
Используйте флаг --verbose, чтобы увидеть полный пошаговый анализ для каждого узла и добавить сводку конфигурации запуска. Используйте -s, чтобы ограничить вывод определённым узлом.
dbt state explain --verbose -s my_node_name
В dbt v2 флаг --verbose добавляет сводку конфигурации запуска в начало вывода и отображает полный пошаговый анализ для каждого узла.
Run configuration:
- started at: 2026-08-17T12:24:15.822733+00:00
- profile: my_profile
- target: dev
- defer to target: prod
- freshness tolerance: 2700 seconds
- tolerate nondeterminism: true
- clone incremental in dev: IF_TABLE_MISSING
- metadata cache TTL: 0 seconds
- select: fqn:my_node_name
SKIP_EXECUTION model.jaffle_shop.customers - model was a no-op because its query is up to date and its upstream data is within freshness tolerance
- table analysis ("ANALYTICS"."MY_SCHEMA"."CUSTOMERS")
- the model table exists already [SUCCESS, TARGET_TABLE_EXISTS]
- query analysis
- the model query has not changed [SUCCESS, NODE_QUERY_UNCHANGED]
- upstream model queries have not changed [SUCCESS]
- data freshness analysis
- upstream dependencies
- "ANALYTICS"."MY_SCHEMA_RAW"."RAW_CUSTOMERS" [FRESH]
- no updates since "ANALYTICS"."MY_SCHEMA"."CUSTOMERS" last executed
- last updated: 5 days ago
- upstream data is up to date [SUCCESS]
Флаг --verbose выводит подробное обоснование решения, которое в зависимости от типа узла может включать следующие виды анализа:
- Анализ таблицы: существует ли целевая таблица в схеме
- Анализ запросов: изменился ли запрос модели или запросы вышестоящих моделей
- Анализ актуальности данных: актуальны ли данные вышестоящих узлов или находится ли их отставание в пределах настроенного значения
lag_tolerance