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

Настройка 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 State требуется учётная запись dbt, даже при локальном запуске dbt. Переносить существующие рабочие процессы или приобретать пользовательские лицензии dbt не нужно.

  1. Войдите в свою учётную запись dbt и начните пробный период dbt State.

    (Версии dbt: v1.13 и новее)
    1. Перейдите в каталог проекта:

      cd to/your/project
    2. Войдите в свою учётную запись dbt:

      dbt login

      Откроется окно браузера, в котором можно войти в учётную запись dbt или бесплатно создать новую. Если вы создаёте новую учётную запись:

      1. Введите своё имя и пароль.
      2. Выберите Enable a trial of dbt State.
      3. Примите условия использования и нажмите Continue.
      4. Войдите в dbt platform.
      5. Настройте способ аутентификации.
      6. Подтвердите свой адрес электронной почты.
    3. Примите условия использования 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
  2. Выполните dbt run или dbt build.

    • Первый запуск: поскольку предыдущего состояния для сравнения нет, dbt создаёт каждый узел с нуля. dbt State сохраняет метаданные этого запуска для последующих сравнений.
    • Последующие запуски: dbt State сравнивает логику каждого узла и данные вышестоящих узлов с предыдущими сборками во всех средах. Он пересобирает узел, если его логика изменилась или если данные вышестоящих узлов изменились, а с момента последней сборки узла прошло больше времени, чем задано окном lag_tolerance. В остальных случаях он пропускает узел или клонирует существующий.

    Чтобы узнать, как dbt State оптимизирует запуски, см. Примеры использования dbt State.

  3. Настройте среду оркестрации.

  4. Убедитесь, что dbt State активен.

  5. Пригласите свою команду использовать 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:

dbt_project.yml
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 на странице сведений о запуске задания, чтобы увидеть подробное объяснение решения для каждого узла.

Дальнейшие шаги​

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

0
Loading