Перейти к основному содержимому
Toby Mao
Director, Engineering at Fivetran
View All Authors

Как на самом деле работает dbt State и помогает снизить затраты на вычисления

· 8 мин. чтения
Joel Labes
Staff Developer Experience Advocate at dbt Labs
Toby Mao
Director, Engineering at Fivetran

При создании проекта dbt вы начинаете с самой простой стратегии и добавляете сложность, только когда требуется повысить скорость или снизить затраты. На уровне отдельных моделей это переход от материализации view к table, а затем к incremental. На уровне всего проекта оптимизации раньше требовали куда большей сложности: чтобы перестраивать только нужные части проекта, приходилось тратить немало умственных усилий на комбинирование селекторов вроде state:modified, source_status:fresher или config.materialized:view и следить за тем, чтобы актуальные JSON-артефакты были доступны всем в организации.

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

Самая интересная с технической точки зрения часть — процесс нормализации запросов1, благодаря которому запуск новой команды dbt lint не приводит сразу к полной пересборке. Но прежде чем углубляться в синтаксические деревья, давайте вспомним, что именно dbt State делает для конечного пользователя.

Базовый рабочий процесс dbt State​

При запуске dbt проверяет на сервере dbt State, выполняется ли для модели одно из условий:

  • она уже существует в целевой схеме и может быть использована повторно;
  • она уже существует в другой схеме и может быть использована повторно;
  • ее необходимо построить с нуля.