Биллинг
dbt предлагает широкий выбор планов и цен, которые подойдут для организаций любого масштаба. Гибкие варианты биллинга, одинаково удобные как для крупных компаний, так и для малого бизнеса, а также доступность серверов по всему миру делают dbt platform самым быстрым и простым способом начать трансформацию данных.
Как работает ценообразование dbt?
Как клиент, вы платите за количество лицензий (seats) и объём использования (usage), потреблённый за каждый месяц. Лицензии в первую очередь тарифицируются на основе количества приобретённых лицензий Developer и Read.
Использование рассчитывается на основе количества Успешно построенных моделей и, при покупке и использовании, количества Semantic Layer Запрошенных метрик, с учётом разумного использования. Все расчёты биллинга выполняются в координированном всемирном времени (UTC).
Что считается лицензией (seat)?
Подробнее о назначении пользователей в аккаунте можно узнать в разделе Users and licenses. Существует четыре типа лицензий:
- Analyst — для наборов прав доступа, которые назначаются и используются совместно теми, кому не нужен ежедневный доступ. Требует покупки лицензии Developer.
- Developer — для наборов прав доступа, предполагающих ежедневную работу с dbt platform.
- IT — для доступа к отдельным функциям управления аккаунтом (например, настройка интеграции с git).
- Read-Only — для доступа только к просмотру определённых документов и отчётов.
Что считается успешно построенной моделью?
dbt считает успешно построенной моделью любой model, которая была успешно построена в рамках запуска через функциональность оркестрации dbt в среде деплоя dbt. Модели учитываются в момент их сборки и выполнения. Это включает задания, запущенные через планировщик dbt, CI-сборки (задания, инициированные pull request’ами), запуски через API dbt, а также любые последующие инструменты dbt с аналогичной функциональностью. Также учитываются модели, которые были успешно построены, даже если сам запуск в итоге завершился ошибкой. Например, если задание содержит 100 моделей, и при одном из запусков 51 модель была успешно построена, после чего задание завершилось с ошибкой, будет засчитано только 51 модель.
Любые модели, построенные в среде разработки dbt (например, через Studio IDE), не учитываются в использовании. Тесты, seeds, ephemeral-модели и snapshots также не учитываются.
При первоначальном создании динамической таблицы модель учитывается (если создание прошло успешно). Однако при последующих запусках dbt пропускает такие модели, если определение динамической таблицы не изменилось. Речь идёт не об изменениях SQL-логики, а об изменениях логики dbt, в частности тех, которые управляются параметром on_configuration_change config). Динамическая таблица продолжает обновляться по расписанию, так как этим обновлением управляет адаптер, а не dbt.
| Loading table... |
Что считается запрошенной метрикой?
Semantic Layer, работающий на базе MetricFlow, измеряет использование в виде отдельных Запрошенных метрик (Queried Metrics).
- Каждый успешный запрос на генерацию или выполнение SQL через API Semantic Layer считается как минимум одной запрошенной метрикой, даже если данные не были возвращены.
- Если запрос рассчитывает или генерирует SQL сразу для нескольких метрик, каждая рассчитанная метрика учитывается как отдельная запрошенная метрика.
- Если запрос на выполнение не был успешно выполнен в платформе данных или завершился ошибкой без выполнения, он не учитывается как запрошенная метрика.
- Запросы метаданных из Semantic Layer также не учитываются как запрошенные метрики.
Примеры запрошенных метрик:
-
Запрос одной метрики с группировкой по одному измерению → 1 запрошенная метрика
dbt sl query --metrics revenue --group-by metric_time -
Запрос одной метрики с группировкой по двум измерениям → 1 запрошенная метрика
dbt sl query --metrics revenue --group-by metric_time,user__country -
Запрос двух метрик с группировкой по двум измерениям → 2 запрошенные метрики
dbt sl query --metrics revenue,gross_sales --group-by metric_time,user__country -
Компиляция для одной метрики → 1 запрошенная метрика
dbt sl query --metrics revenue --group-by metric_time --compile -
Компиляция для двух метрик → 2 запрошенные метрики
dbt sl query --metrics revenue,gross_sales --group-by metric_time --compile
Просмотр использования в продукте
Просмотр данных об использовании в продукте доступен только для определённых ролей:
- План Starter — группа Owner
- Планы Enterprise и Enterprise+ — роли администратора аккаунта и администратора биллинга
Для просмотра использования на уровне аккаунта, если у вас есть доступ к страницам Billing и Usage, вы можете увидеть оценку использования за текущий месяц. На странице Billing в разделе Account Settings отображается, как текущее использование соотносится с лимитами аккаунта. Также можно увидеть, какие проекты строят наибольшее количество моделей.
Чтобы посмотреть оценку использования на уровне аккаунта, перейдите в 'Account settings' и выберите 'Billing'.Пользователи планов Starter и Developer могут видеть, как аккаунт использует включённые в план модели. Пользователи плана Enterprise могут видеть, какая часть годового обязательства уже использована и сколько осталось.
На странице Project Home любого проекта любой пользователь с доступом к проекту может увидеть, сколько моделей строится каждый месяц. Дополнительные детали по заданиям с наибольшим количеством построенных моделей доступны на странице каждой Environment.
Кроме того, на странице Job Details во вкладке Insights можно посмотреть, сколько моделей строится в месяц для конкретного задания и какие модели собираются дольше всего.
Посмотрите, сколько моделей строится в месяц для конкретного задания, перейдя на вкладку 'Insights' на странице 'Job details'.Информация об использовании доступна клиентам с планами на основе потребления, и некоторые визуализации могут быть недоступны для клиентов на устаревших планах. Любые данные об использовании, отображаемые в dbt, являются оценочными, и возможна задержка в их отображении. Окончательные данные за месяц будут указаны в вашем ежемесячном счёте (счета применимы для планов Starter и Enterprise).
dbt Copilot: учёт и ограничения использования StarterEnterpriseEnterprise+
Использование Copilot измеряется на основе количества завершённых AI-запросов, называемых действиями Copilot. Ограничения использования применяются для обеспечения справедливого доступа и стабильной работы системы.
Определённое количество вызовов Copilot выделяется ежемесячно в зависимости от вашего подписочного плана. После достижения лимита доступ к функциональности Copilot временно отключается до начала следующего биллингового периода.
Информация об использовании и учёте
Просмотр использования в продукте
Чтобы посмотреть использование в вашем аккаунте:
- Перейдите в Account settings.
- Выберите Billing в разделе Settings.
- На странице биллинга нажмите Copilot, чтобы посмотреть использование.
Планы и биллинг
dbt предлагает несколько планов с различным набором возможностей. Время от времени детали планов могут меняться. Мы всегда заранее уведомляем об изменениях. Ниже описано, как работает биллинг для каждого плана.
Биллинг плана Developer
План Developer бесплатный и включает одну лицензию Developer и 3 000 моделей в месяц. Лимит моделей обновляется в начале каждого календарного месяца. Если вы превысите 3 000 моделей, все последующие запуски будут отменены до обновления лимита или перехода на платный план. Остальная часть платформы dbt остаётся доступной, и никакая работа не будет потеряна.
Указанные выше значения включённых успешно построенных моделей отражают актуальные условия ценообразования. В зависимости от условий, действовавших на момент регистрации в плане Developer, включённые лимиты могут отличаться.
Биллинг плана Starter
Клиенты плана Starter оплачивают лицензии и использование ежемесячно с помощью банковской карты. В аккаунт включено 15 000 моделей в месяц. Лицензии оплачиваются авансом в начале месяца. При добавлении лицензий в течение месяца стоимость рассчитывается пропорционально и списывается в тот же день. Удалённые в течение месяца лицензии будут отражены в следующем счёте и не подлежат возврату. Данные карты и количество лицензий можно изменить в разделе биллинга в любое время. Аккаунт получает один ежемесячный счёт, включающий авансовую оплату лицензий и оплату использования за предыдущий месяц.
Использование рассчитывается и оплачивается постфактум за предыдущий месяц. При превышении 15 000 моделей дополнительное использование будет выставлено в следующем счёте по тарифам с страницы цен.
Неиспользованные включённые модели не переносятся на следующий месяц. Оценить счёт можно по формуле:
($100 x количество лицензий developer) + ((построенные модели - 15 000) x $0.01)
Указанные лимиты включённых моделей отражают текущие условия. В зависимости от условий при подключении плана Starter лимиты могут отличаться.
Биллинг плана Enterprise
Клиенты плана Enterprise оплачивают услуги ежегодно по счёту, а дополнительное использование — ежемесячно постфактум (если применимо). Возможны индивидуально согласованные тарифы. Подробности указаны в вашем договоре или заказе, либо вы можете связаться с командой аккаунта.
Информация о биллинге Enterprise недоступна в интерфейсе dbt. Все изменения обрабатываются через вашего Solutions Architect или менеджера аккаунта dbt Labs.
Устаревшие планы
Клиенты, купившие план dbt Starter (ранее Team) до 11 августа 2023 года, остаются на устаревшем тарифе при условии, что аккаунт находится в хорошем состоянии. Устаревший план основан на лицензиях и включает неограниченное количество моделей при разумном использовании.
Для клиентов, использующих устаревший Semantic Layer с пакетом dbt_metrics, продукт будет выведен из эксплуатации в декабре 2023 года. Пользователи могут в любой момент перейти на обновлённую версию Semantic Layer, работающую на MetricFlow. Обновлённая версия доступна большинству клиентов (см. prerequisites) в рамках бесплатного пробного периода при разумном использовании.
dbt Labs может ввести ограничения при превышении разумного использования. Дополнительные функции, обновления или апгрейды могут оплачиваться отдельно. Любые изменения цен будут заранее сообщены в соответствии с Terms of Use.
Управление использованием
В dbt нажмите на имя аккаунта в левом меню и выберите Account settings. Пункт Billing находится в левом меню в разделе Settings. Здесь можно посмотреть доступные планы и функции каждого из них.
Уведомления об использовании
Каждый план автоматически отправляет email-уведомления при достижении 75%, 90% и 100% оценочного использования.
- План Starter — уведомления получают все пользователи группы Owner.
- Планы Enterprise — уведомления получают пользователи с правами Account Admin и Billing Admin.
Отказаться от этих уведомлений нельзя. Чтобы другие пользователи тоже получали уведомления, назначьте им соответствующие права. Обратите внимание, что фактическое использование может уже превышать указанный в уведомлении процент из‑за особенностей паттернов использования и небольшой задержки обновления данных.
Как остановить начисление использования?
Существует два способа прекратить построение моделей и начисление платы:
- Откройте Job Settings каждого задания и перейдите в раздел Triggers. Отключите Run on Schedule и установите Run on Pull Requests? для Continuous Integration в значение No. Убедитесь, что ваши процессы не запускают задания через API dbt. Этот вариант позволяет сохранить задания без дальнейшего построения моделей.
- Альтернативно вы можете удалить часть или все задания dbt. Это гарантирует, что запуски не будут выполняться, но задания будут удалены безвозвратно.
Оптимизация затрат в dbt
dbt предоставляет способы оптимизировать количество построенных моделей и затраты на хранилище данных.
Лучшие практики оптимизации успешно построенных моделей
При оптимизации затрат важно снижать количество построенных моделей, не нарушая лучшие практики. Чтобы продолжать использовать тесты и пересобирать представления при изменении логики, рекомендуется применять комбинацию подходящих практик. В частности, если вы исключаете views из регулярных запусков заданий dbt, необходимо настроить merge‑задание для деплоя обновлённой логики представлений при обнаружении изменений.
Исключение views в задании dbt
Многие пользователи dbt используют views, которые не всегда нужно пересобирать при каждом запуске. Для заданий, содержащих views, которые не используют макросы с динамической генерацией кода (например, case‑выражения) и не имеют тестов, выполните следующие шаги:
- Перейдите к вашему production‑заданию деплоя в dbt.
- Измените команду, добавив:
--exclude config.materialized:view. - Сохраните изменения задания.
Если ваши views содержат макросы с case‑выражениями, зависящими от upstream‑таблиц, их необходимо выполнять при каждом запуске. Если при этом нужно запускать тесты для views, следуйте практике Exclude views while still running tests и создайте кастомный selector.
Исключение views при запуске тестов
Запуск тестов для views при каждом выполнении задания помогает поддерживать качество данных и избегать повторных запусков. Чтобы исключить views из сборки, но продолжать запускать тесты, создайте кастомный selector следующим образом:
-
Откройте проект dbt в Studio IDE.
-
Добавьте файл
selectors.ymlв корень проекта. -
Добавьте в файл следующий код:
selectors:
- name: skip_views_but_test_views
description: >
A default selector that will exclude materializing views
without skipping tests on views.
default: true
definition:
union:
- union:
- method: path
value: "*"
- exclude:
- method: config.materialized
value: view
- method: resource_type
value: test -
Сохраните файл и закоммитьте его в репозиторий.
-
Измените команды dbt в заданиях, добавив
--selector skip_views_but_test_views.
Сборка только изменённых views
Чтобы гарантировать пересборку views при изменении логики, создайте merge‑задание, которое запускается при слиянии кода в main:
- Убедитесь, что в среде настроено CI‑задание.
- Создайте новое deploy‑задание с названием “Merge Job”.
- Установите Environment в значение CI‑среды. См. Types of environments.
- Установите Commands:
dbt run -s state:modified+. Использоватьdbt buildне требуется, так как CI‑задание уже выполнило сборку и тестирование. - В Execution Settings выберите production‑задание для сравнения:
- Defer to a previous run state — выберите созданное задание “Merge Job”, чтобы сравнение выполнялось с момента последнего merge.
- В проекте dbt выполните шаги из руководства Customizing CI/CD with custom pipelines, чтобы создать скрипт, который будет вызывать API dbt после merge в репозитории, или посмотрите это видео.
Назначение merge‑задания:
- Мгновенно деплоить изменения из PR в production.
- Поддерживать актуальность production‑views при минимальных затратах.
Merge‑процесс оптимизирует затраты на облачную платформу данных и сокращает время выполнения заданий, однако решение о его внедрении остаётся за вами.
Оптимизация неэффективных моделей
Вкладка Job Insights
Для снижения затрат на хранилище данных можно определить, какие модели в среднем собираются дольше всего, на странице Job во вкладке Insights. График показывает среднее время выполнения моделей на основе последних 20 запусков. Модели с наибольшим временем выполнения — основные кандидаты на оптимизацию.
Вкладка Model Timing
Чтобы детальнее понять, сколько времени занимает выполнение каждой модели в конкретном запуске, используйте вкладку Model Timing. Выберите нужный запуск на странице Run History, затем на странице запуска перейдите во вкладку Model Timing.
После определения моделей для оптимизации рекомендуем ознакомиться с материалами:
- Build scalable and trustworthy data pipelines with dbt and BigQuery
- Best Practices for Optimizing Your dbt and Snowflake Deployment
- How to optimize and troubleshoot dbt models on Databricks
Часто задаваемые вопросы
-
Что произойдёт, если мне понадобится больше лицензий на плане Starter?
Если вам нужно больше лицензий developer, выберите Contact Sales в настройках биллинга и свяжитесь с отделом продаж для обсуждения плана Enterprise или Enterprise+. -
Что если я значительно превышу включённый лимит моделей на плане Starter или Developer?
Рассмотрите переход на план Starter или Enterprise. Эти планы включают больше моделей и позволяют превышать месячные лимиты. Клиенты Enterprise получают поддержку выделенной команды и индивидуальные условия. -
Я хочу обновить план. Сохранится ли вся моя работа?
Да. Обновление аккаунта dbt не повлияет на существующие проекты и настройки. -
Как выбрать подходящий план?
Лучше всего проконсультироваться с нашей командой продаж. Они помогут подобрать оптимальный вариант. Также доступен бесплатный двухнедельный пробный период плана Starter. -
Каковы условия пробного периода Semantic Layer?
Клиенты Starter и Enterprise могут подключить бесплатный пробный период Semantic Layer, работающего на MetricFlow, с лимитом до 1 000 запрошенных метрик в месяц. Пробный период доступен как минимум до января 2024 года и может быть продлён по усмотрению dbt Labs. По окончании пробного периода доступ может быть отключён или потребуется покупка. -
Каково ограничение разумного использования для Semantic Layer, работающего на MetricFlow, в период пробного доступа?
Каждый аккаунт ограничен 1 000 запрошенными метриками в месяц в течение пробного периода. Лимиты могут быть изменены по усмотрению dbt Labs.

