Настройка dbt State
На этой странице описана настройка dbt State в dbt v1, dbt v2 и dbt platform.
Предварительные требования
Перед настройкой dbt State убедитесь, что у вас есть:
- Поддерживаемая версия dbt: dbt State встроен в dbt platform, dbt v2 и dbt v1.13. Он также доступен в виде плагина для dbt v1.7–1.12.
- Поддерживаемая платформа данных: Snowflake, Databricks, BigQuery или Redshift. Поддержка других хранилищ запланирована.
- Учётная запись dbt: dbt State использует вашу учётную запись dbt для аутентификации, даже если вы запускаете dbt локально или в неинтерактивной среде, например в конвейерах CI/CD или внешнем оркестраторе. Информацию о регистрации см. в разделе О dbt State, а сведения о ценах — в разделе Использование и стоимость dbt State.
Настройка dbt State
- Самостоятельно развёрнутый dbt
- Существующая учётная запись dbt platform
Для аутентификации в сервисе dbt State требуется учётная запись dbt, даже при локальном запуске dbt. Переносить существующие рабочие процессы или приобретать пользовательские лицензии dbt не нужно.
-
Войдите в свою учётную запись dbt и начните пробный период dbt State.
(Версии dbt: v1.13 и новее)-
Перейдите в каталог проекта:
cd to/your/project -
Войдите в свою учётную запись dbt:
dbt loginОткроется окно браузера, в котором можно войти в учётную запись dbt или бесплатно создать новую. Если вы создаёте новую учётную запись:
- Введите своё имя и пароль.
- Выберите Enable a trial of dbt State.
- Примите условия использования и нажмите Continue.
- Войдите в dbt platform.
- Настройте способ аутентификации.
- Подтвердите свой адрес электронной почты.
-
Примите условия использования dbt State и нажмите Start 30-day trial.
После начала пробного периода приостановить его нельзя. По его окончании вашей учётной записи предоставляется бесплатный ежемесячный лимит DATT, размер которого зависит от тарифного плана. Подробнее см. в разделе Пробный период и оплата dbt State.
Вы также можете включать или отключать dbt State для отдельных запусков с помощью флагов CLI
--manage-stateили--no-manage-stateлибо задавать переменную окруженияDBT_ENGINE_MANAGE_STATE.Чтобы включить dbt State для всех участников проекта, добавьте
manage_state: trueв блокflags:файлаdbt_project.yml:flags:
manage_state: true -
-
Выполните
dbt runилиdbt build.- Первый запуск: поскольку предыдущего состояния для сравнения нет, dbt создаёт каждый узел с нуля. dbt State сохраняет метаданные этого запуска для последующих сравнений.
- Последующие запуски: dbt State сравнивает логику каждого узла и данные вышестоящих узлов с предыдущими сборками во всех средах. Он пересобирает узел, если его логика изменилась или если данные вышестоящих узлов изменились, а с момента последней сборки узла прошло больше времени, чем задано окном
lag_tolerance. В остальных случаях он пропускает узел или клонирует существующий.
Чтобы узнать, как dbt State оптимизирует запуски, см. Примеры использования dbt State.
-
Настройте среду оркестрации.
- Собственный оркестратор: прежде чем использовать dbt State в собственном оркестраторе, создайте сервисный токен в dbt platform и настройте среду оркестрации для его использования. Инструкции см. в разделе Настройка аутентификации для неинтерактивных сред. После настройки вы сможете запускать dbt с помощью своего оркестратора.
- dbt platform: перейдите в Orchestration, чтобы создать среды и задания, а затем включить для них dbt State.
Предварительное требование: у вас должны быть права администратора в вашей учётной записи dbt platform.
-
Начните пробный период dbt State.
-
В своей учётной записи dbt platform нажмите название учётной записи в левом нижнем углу над именем пользователя, затем нажмите Account settings.
-
В разделе Settings перейдите в Billing & Usage > Usage-based features.
-
На вкладке State нажмите Start free trial.
После начала пробного периода приостановить его нельзя. По его окончании вашей учётной записи предоставляется бесплатный ежемесячный лимит DATT, размер которого зависит от тарифного плана. Подробнее см. в разделе Пробный период и оплата dbt State.
Продлённый пробный период для пользователей оркестрации с учётом состоянияЕсли вы использовали оркестрацию с учётом состояния до 1 июня 2026 года, ваш пробный период dbt State будет продлён сверх 30 дней. Если продление не применилось к вашей учётной записи, свяжитесь с командой, которая её сопровождает.
-
Ознакомьтесь с условиями использования и примите их.
-
Нажмите Start 30-day trial.
-
-
Нажмите Enable dbt State.
-
Выберите, где включить dbt State. Доступны следующие варианты:
-
By environment: включает dbt State в выбранной среде развёртывания или разработки.
- Для сред развёртывания новые задания автоматически получают значение Inherited from environment, и dbt State включается для них без дополнительной настройки. Существующие задания не обновляются автоматически — необходимо настроить каждое задание вручную.
- Для сред разработки этот вариант включает dbt State в Studio IDE.
-
By specific jobs: включает dbt State для отдельных заданий. Чтобы включить его для других заданий, см. Включение dbt State для отдельных заданий.
-
-
Нажмите Enable dbt State.
Проверка активности dbt State
После завершения запуска убедитесь, что dbt State активен:
- В CLI: проверьте, есть ли в выводе журнала сообщение вида
dbt State adapter: dbt-state v2.10.1 is enabled. - В dbt platform: проверьте представление журналов созданных ресурсов, чтобы узнать, были ли они созданы или использованы повторно, либо откройте вкладку Explain на странице сведений о запуске задания, чтобы увидеть решение State для каждого ресурса.
Если dbt State работает не так, как ожидалось, см. раздел Отладка dbt State.
Приглашение участников команды
Чем больше участников команды используют dbt State, тем эффективнее он работает: это даёт больше возможностей клонировать существующие узлы вместо их пересборки. Чтобы пригласить коллег:
- В CLI (dbt v1.13+): попросите коллег выполнить
dbt loginпосле включения dbt State для учётной записи. - В dbt platform: перейдите в Account settings > Users и нажмите Invite users. Подробнее см. в разделе Приглашение новых пользователей.
Настройка допустимой задержки
Допустимая задержка определяет, сколько времени dbt State может не пересобирать узел при изменении данных вышестоящих узлов. Узел пересобирается только в том случае, если с момента его последней сборки прошло больше времени, чем задано окном допустимой задержки, и данные вышестоящих узлов изменились. Этот параметр можно задать на уровне проекта, среды или модели. Если он не настроен, lag_tolerance по умолчанию равен 45m. Рекомендуем начать со следующего выражения Jinja:
models:
+state:
lag_tolerance: "{{ '4h' if target.name == 'prod' else '7d' }}"
В этом примере модели для целевой конфигурации prod пересобираются, если с момента последней сборки прошло более 4 часов и данные вышестоящих узлов изменились. Во всех остальных средах модели пересобираются, если с момента последней сборки прошло более 7 дней и данные вышестоящих узлов изменились.
Подробнее см. в справочнике по настройке lag_tolerance.
Чтобы помочь вам настроить значения lag_tolerance, страница dbt State на dbt platform предоставляет рекомендации по допустимому отставанию на основе истории сборок ваших моделей за последние 30 дней, позволяя определить, для каких моделей будет полезно увеличить допустимое отставание.
Отладка dbt State
Если dbt State работает не так, как ожидалось, можно указать переменную окружения DBT_ENGINE_MANAGE_STATE перед командой запуска, чтобы локализовать проблему:
DBT_ENGINE_MANAGE_STATE=0 dbt run --target dev --select "customers"
Чтобы после запуска узнать, какое решение dbt State принял для каждого узла и почему, выполните команду (Версии dbt: v2.0 и новее) dbt state explain. Если вы используете dbt platform, та же информация доступна без выполнения команды — перейдите на вкладку Explain на странице сведений о запуске задания, чтобы увидеть подробное объяснение решения для каждого узла.
Дальнейшие шаги
- Переход с оркестрации с учётом состояния
dbt loginс dbt State- Настройка отложенного разрешения ссылок (deferral)
- Настройка аутентификации для неинтерактивных сред
- Настройки dbt State
- Мониторинг работы dbt State