Cost Insights показывает оценочные затраты и время использования вычислительных ресурсов для ваших проектов и моделей dbt непосредственно на dbt platform, позволяя измерять эффект таких оптимизаций, как dbt State и оркестрация с учётом состояния, и делиться результатами.
Оркестрация с учетом состояния теперь называется dbt State
dbt State работает со всеми движками и средами: dbt v1, dbt platform и dbt v2
Если вы использовали оркестрацию с учетом состояния до 1 июня 2026 года, вы можете продолжать ее использовать. Когда вы начнете бесплатный пробный период dbt State, он будет продлен сверх стандартных 30 дней. Если продление не применено к вашей учетной записи, обратитесь к команде по работе с вашим аккаунтом. Чтобы начать, ознакомьтесь с разделом Переход с оркестрации с учетом состояния.
dbt State и оркестрация с учётом состояния повышают эффективность рабочих процессов dbt за счёт повторного использования моделей и тестов вместо их полного пересоздания. Когда включена любая из этих возможностей, Cost Insights помогает продемонстрировать достигнутое сокращение затрат и повышение эффективности. Эти оценки затрат и их сокращения основаны на ретроспективном анализе запусков после включения dbt State или оркестрации с учётом состояния. Они отражают фактическое использование ресурсов в прошлом, а не прогнозы будущих затрат или их сокращения.
С помощью Cost Insights вы можете увидеть:
Сколько стоит выполнение ваших моделей dbt: просматривайте затраты на вычислительные ресурсы и время их использования для каждой модели и задания в единицах измерения вашего хранилища данных.
Сокращение затрат благодаря dbt State или оркестрации с учётом состояния: оценивайте снижение затрат при повторном использовании неизменённых моделей с помощью dbt State или оркестрации с учётом состояния.
Динамику затрат во времени: отслеживайте расходы на хранилище данных и эффект оптимизаций в ваших проектах dbt.
Фильтрацию по типу ресурсов: на диаграммах Cost Insights (Cost, Usage, Query run time, Builds) используйте раскрывающееся меню Assets, чтобы отфильтровать данные по Models, Tests или All. На каждой вкладке сохраняется собственный выбор.
Разбивку затрат по заданиям: в табличном представлении Cost Insights используйте кнопки All и Jobs, чтобы переключаться между сводным представлением и разбивкой затрат по заданиям.
Раздел Cost Insights доступен в разных областях dbt platform и позволяет просматривать данные о затратах и эффект оптимизаций dbt State и оркестрации с учётом состояния в различных разрезах:
Оценки затрат предназначены для анализа и оптимизации, а не для сверки счетов.
dbt рассчитывает стоимость выполнения ваших моделей dbt, используя метаданные об использовании хранилища данных и сведения о тарификации. dbt рассчитывает затраты ежедневно, используя доступные данные максимум за последние семь дней.
В следующих разделах объясняется, как рассчитываются затраты для каждого поддерживаемого хранилища данных. Разверните нужный раздел, чтобы узнать подробности.
Snowflake
dbt рассчитывает стоимость запросов Snowflake, используя данные Snowflake об отнесении затрат к запросам и вашу цену за кредит (price_per_credit). dbt получает значение price_per_credit непосредственно из Snowflake, если оно доступно; в противном случае dbt использует настроенное значение или значение по умолчанию на dbt platform. Подробнее о настройке и просмотре этих значений см. в разделе Настройка параметров Cost Insights.
Формула:
credits_per_query * price_per_credit
Сообщить об ошибке в коде
Где:
credits_per_query — кредиты за облачные сервисы, вычислительные ресурсы и ускорение запросов, отнесённые к запросу.
Для стандартных хранилищ и хранилищ Generation 2 dbt получает это значение из QUERY_ATTRIBUTION_HISTORY.
price_per_credit — ваша цена за кредит Snowflake (из системных таблиц Snowflake, если доступна; иначе используется заданное вами значение или тариф по умолчанию).
Ограничение отнесения затрат в Snowflake
Snowflake не относит затраты к запросам, которые выполняются примерно за 100 миллисекунд или быстрее. Поэтому итоговые значения Cost Insights могут быть ниже расходов на вычислительные ресурсы, отображаемых на панелях биллинга Snowflake. Подробнее см. в документации Snowflake.
BigQuery
BigQuery не предоставляет стоимость отдельных запросов непосредственно в системных таблицах. Вместо этого dbt оценивает затраты, сочетая данные об использовании ресурсов запросом с ценовым параметром (из ваших настроек или тарифа по умолчанию).
Тарификация по запросу (on-demand)
Стоимость определяется объёмом данных, обрабатываемых каждым запросом. Показатель использования отражает объём этих данных, за который взимается плата при выполнении запроса.
Формула:
data_processed_per_query * price_per_tib
Сообщить об ошибке в коде
Где:
data_processed_per_query - общий объём данных, за который взимается плата при выполнении запроса (в TiB). dbt получает это значение из information_schema.jobs.total_bytes_billed. Подробнее см. в документации BigQuery.
price_per_tib - цена BigQuery за TiB при тарификации on-demand (из ваших настроек или тарифа по умолчанию).
Тарификация по мощности (резервирование)
Стоимость определяется временем выполнения каждого запроса на зарезервированных вычислительных ресурсах. Показатель использования отражает объём времени зарезервированных вычислительных ресурсов, потреблённого запросом.
Формула:
compute_time_per_query * price_per_slot_hour
Сообщить об ошибке в коде
Где:
compute_time_per_query - суммарное время использования слотов запросом (в часах). dbt получает это значение из information_schema.jobs.total_slot_ms. Подробнее см. в документации BigQuery.
price_per_slot_hour - цена BigQuery за слот-час при тарификации по мощности (из ваших настроек или тарифа по умолчанию)
Кэшированные запросы
Запросы, обслуживаемые из кэша, не потребляют вычислительные ресурсы и учитываются со стоимостью $0.
Databricks
Databricks не относит использование ресурсов непосредственно к отдельным запросам. Вместо этого dbt оценивает стоимость каждого запроса, пропорционально распределяя единицы Databricks Units (DBU) в зависимости от продолжительности выполнения каждого запроса в течение расчётного периода.
Запросам, которые выполняются дольше, назначается большая доля использованных ресурсов.
Использование ресурсов пересчитывается в доллары по вашей прейскурантной цене.
Формула:
usage_per_query * cost_per_dbu
Сообщить об ошибке в коде
Где:
usage_per_query - количество DBU, отнесённых к запросу.
cost_per_dbu - стоимость одной DBU в долларах для соответствующей товарной позиции (SKU). Сведения о системной таблице цен см. в документации Databricks.
Databricks предоставляет данные об использовании ресурсов по расчётным интервалам. Это периоды времени, за которые вычислительный ресурс потребил известное количество DBU. У запросов есть собственное время начала и окончания. Сведения о системной таблице использования ресурсов для тарификации см. в документации Databricks.
Чтобы отнести использование ресурсов к запросам:
dbt определяет, с какими расчётными интервалами пересекается каждый запрос.
dbt рассчитывает, сколько времени запрос выполнялся в каждом интервале.
dbt распределяет DBU пропорционально доле запроса в общем времени выполнения запросов на этом вычислительном ресурсе в том же интервале.
Cost Insights поддерживает как Amazon Redshift Serverless, так и развёртывания с выделенными кластерами. dbt автоматически определяет тип развёртывания при проверке подключения.
примечание
В Redshift dbt относит затраты к запросам с помощью комментариев, которые автоматически добавляет в каждый запрос. Если другой процесс удаляет или заменяет эти комментарии, dbt не может связать запрос с его моделью, и затраты на него не будут отнесены к ней. Убедитесь, что ничто в вашей среде Redshift не удаляет и не заменяет комментарии dbt в запросах.
Redshift Serverless
dbt оценивает затраты, определяя, какие расчётные периоды Redshift Processing Unit (RPU) пересекаются со временем выполнения каждого запроса, и относя к запросу пропорциональную долю RPU-часов.
Формула:
rpu_hours_per_query * rpu_price_per_hour
Сообщить об ошибке в коде
Где:
rpu_hours_per_query - RPU-часы, отнесённые к запросу пропорционально его пересечению с каждым расчётным периодом. dbt получает данные о расчётных периодах из SYS_SERVERLESS_USAGE. Подробнее см. в документации Amazon Redshift.
rpu_price_per_hour - ваша цена за RPU в час (из значения, заданного в настройках Cost Insights).
Redshift Provisioned
dbt оценивает затраты на основе продолжительности выполнения каждого запроса и количества узлов в вашем кластере.
elapsed_time_hours - время выполнения запроса в часах. dbt получает это значение из SYS_QUERY_HISTORY.
node_count - количество узлов в вашем кластере. dbt получает это значение из STV_SLICES.
node_price_per_hour - ваша цена за узел в час (из значения, заданного в настройках Cost Insights).
Дополнительные замечания:
Хранение данных: системные таблицы Redshift (SYS_QUERY_HISTORY, SYS_SERVERLESS_USAGE) хранят историю только за семь дней. Данные о затратах для Redshift могут охватывать более короткий период, чем для других хранилищ данных. dbt рассчитывает затраты по всем данным, доступным за этот период.
Необходимо указать цены: для Redshift нет значений цен по умолчанию. Затраты будут отображаться как $0, пока вы не зададите rpu_price_per_hour (для serverless) или node_price_per_hour (для provisioned) в настройках Cost Insights.
Затраты на параллельно выполняемые запросы
Redshift относит затраты к каждому запросу так, как если бы он выполнялся на кластере в одиночку. Если запросы выполняются параллельно, сумма затрат на отдельные запросы может превышать ваш фактический счёт.
dbt рассчитывает сокращение затрат, сравнивая фактические затраты с тем, какими они были бы без повторного использования моделей. Для этого dbt использует данные за последние семь дней (при наличии) и выполняет следующие действия:
Рассчитывает среднюю стоимость одного построения модели.
Подсчитывает, сколько раз модель была использована повторно вместо повторного построения.
Умножает количество повторных использований модели на среднюю стоимость одного построения, чтобы определить общее сокращение затрат.
Формула:
average_cost_per_build * reuse_count
Сообщить об ошибке в коде
dbt рассчитывает сокращение затрат для каждой модели и каждой среды развёртывания (production и staging) на основе недавних запусков.
Дополнительные примечания:
dbt ежедневно рассчитывает оценочные затраты и экономию.
Ценовые параметры берутся из системных таблиц хранилища данных (при наличии), настроек на уровне подключения или прейскурантных цен по умолчанию.
Следующий пример показывает, как dbt рассчитывает сокращение затрат. Рассмотрим последние семь дней и предположим, что модель выполнялась в два разных дня:
День
Общие затраты
Общее количество выполнений
День 1
$5
5
День 2
$10
10
Итого
$15
15
Средняя стоимость одного выполнения: $15 ÷ 15 запусков = $1 за запуск
Если за тот же период модель была повторно использована восемь раз вместо повторного построения, оценочное сокращение затрат составит: $1 средней стоимости за запуск * 8 повторных использований = $8
При использовании Cost Insights учитывайте следующее:
Сбор и обновление данных
Cost Insights использует ваши учётные данные для метаданных платформы для доступа к системным таблицам хранилища данных. Помимо настройки метаданных платформы, отдельные учётные данные не требуются.
Вам нужны достаточные разрешения для выполнения запросов к таблицам метаданных хранилища данных.
Данные о затратах рассчитываются один раз в день по расписанию заданием, которое запускается примерно в 17:00 UTC.
Задание сбора данных обрабатывает только завершённые календарные дни. Текущий день не включается, поскольку данные об использовании хранилища могут быть ещё неполными.
Для заданий, выполнявшихся вчера (или ранее), данные о затратах будут доступны после следующего ежедневного обновления.
Для заданий, выполнявшихся сегодня, данные о затратах появятся только после обновления на следующий день, независимо от времени их выполнения.
Если вы не видите данных о затратах для недавнего задания, убедитесь, что после его выполнения прошёл хотя бы один полный календарный день. Индикатор Updated в разделе Cost Insights показывает, когда произошло последнее обновление.
Точность расчёта затрат
dbt рассчитывает затраты на основе данных об использовании ресурсов, предоставленных хранилищем данных, и применяет стоимость кредитов или вычислительных ресурсов по умолчанию в соответствии со стандартными тарифами хранилища.
Если у вас есть индивидуальные соглашения о ценах с поставщиком хранилища данных, переопределите значения по умолчанию в настройках аккаунта, чтобы обеспечить точность отчётности о затратах. Подробнее см. в разделе Настройка Cost Insights.
Обновляйте ценовые параметры при каждом изменении договоров о тарифах на хранилище данных, чтобы поддерживать точность отслеживания.
Изменения ценовых параметров применяются только к будущим расчётам — исторические данные о затратах остаются неизменными.
Данные об оптимизации
Данные об оптимизации и сокращении использования ресурсов становятся доступны после включения dbt State или оркестрации с учётом состояния и начала повторного использования моделей между запусками.
Для аккаунтов, уже использующих dbt State или оркестрацию с учётом состояния, выполните хотя бы одно полное построение моделей в течение последних 10 дней перед включением Cost Insights, чтобы сформировать базовый уровень для расчёта сокращения затрат. Если данные о сокращении затрат не отображаются, выполните полное построение для формирования базового уровня.
В настоящее время Cost Insights рассчитывает оценочное сокращение использования вычислительных ресурсов хранилища данных на уровне моделей; в будущем расчёт также будет охватывать тесты и seeds.
Экспорт данных
Вы можете экспортировать данные о затратах в CSV-файл для дальнейшего анализа и подготовки отчётов. Подробнее см. в разделе Анализ данных о затратах.
Почему фактические затраты на хранилище данных могут отличаться от отображаемых?
Cost Insights показывает оценочные затраты на основе данных об использовании, предоставляемых хранилищем данных, и заданных вами параметров ценообразования. Эти оценки основаны на ретроспективном анализе прошлых запусков и отражают фактическое использование, а не прогноз будущих затрат. Корректировки и расхождения возможны, если:
Для вашего хранилища данных действуют индивидуальные тарифы, отличающиеся от стандартной стоимости единицы вычислительных кредитов.
На уровне выставления счетов применяются скидки или кредиты, которые не отражены в таблицах использования.
Затраты включают дополнительные начисления помимо платы за вычислительные ресурсы.
Cost Insights в dbt platform предназначен для оценки общего уровня затрат и показывает составляющие затрат, связанные с dbt, а не обеспечивает точное соответствие вашему счету.
Как часто обновляются данные о затратах?
Данные о затратах обновляются ежедневно и отражают использование ресурсов за предыдущий день. Это означает, что между выполнением задания и появлением данных о затратах на него в Cost Insights может пройти до одного дня.
Что делать, если данные о затратах не отображаются?
Если данные о затратах не отображаются в Cost Insights, проверьте следующее:
Убедитесь, что в настройках вашей учетной записи настроены учетные данные для доступа к метаданным платформы и что проверка этих учетных данных проходит успешно. Подробнее см. в разделе Настройка Cost Insights.
Убедитесь, что у вас есть одно из необходимых разрешений для просмотра данных о затратах. Подробнее см. в разделе Назначение необходимых разрешений.
Убедитесь, что хотя бы одно задание выполняется в производственной среде. Данные о затратах появляются только после выполнения заданий.
Данные о затратах обновляются ежедневно и отражают использование ресурсов за предыдущий день. Это означает, что между выполнением задания и появлением данных о затратах на него может пройти до одного дня. Если вы только что запустили задание, дождитесь следующего дня, чтобы увидеть данные.
После включения Cost Insights dbt использует данные за 10 предыдущих дней, чтобы сформировать базовые показатели для расчета снижения затрат. Если данные о снижении затрат не отображаются, убедитесь, что за последние 10 дней накопилось достаточно данных об истории выполнения заданий.
Приводит ли использование Cost Insights к расходам на хранилище данных?
dbt выполняет легковесные запросы только для чтения к вашему хранилищу данных, чтобы получать метаданные и обеспечивать работу таких функций, как Cost Insights. dbt ограничивает область действия этих запросов и применяет фильтры, чтобы свести их влияние к минимуму. У большинства клиентов расходы незначительны (обычно составляют считаные центы).
Как увеличение частоты запуска заданий влияет на оценку снижения затрат?
Показатели снижения затрат отражают то, как dbt оптимизирует затраты на вычисления, повторно используя существующие результаты вместо повторного выполнения той же модели.
Когда вы увеличиваете частоту запуска заданий (например, потому что повышение производительности позволяет чаще запускать задания по расписанию), у dbt появляется больше возможностей для повторного использования моделей. По мере роста повторного использования dbt экономит больше вычислительных ресурсов, а значит, и отображаемые показатели снижения затрат могут увеличиваться.
Этот показатель отражает влияние повторного использования на эффективность вашей текущей рабочей нагрузки. Он показывает, насколько dbt снижает затраты на вычисления за счет повторного использования моделей вместо их повторного построения, а не общее снижение расходов на хранилище данных.
Что произошло с оркестрацией с учетом состояния?
1 июня 2026 года dbt Labs и Fivetran представили dbt State — новую улучшенную версию оркестрации с учетом состояния. Одна из ключевых возможностей — lag_tolerance: этот параметр определяет, сколько времени должно пройти с момента последнего изменения данных в вышестоящих узлах, прежде чем узел можно будет пересобрать.
dbt State расширяет возможности оркестрации с учётом состояния в нескольких ключевых аспектах:
Работает везде — dbt State работает с dbt v1, dbt v2 и dbt platform, а также с внешними оркестраторами как в средах разработки, так и в средах развёртывания.
Более точное отслеживание актуальности данных — dbt State отслеживает актуальность данных во всём DAG и автоматически передаёт сведения о ней через модели, материализованные как представления. В отличие от параметра build_after в оркестрации с учётом состояния, который выполняет сравнение относительно последнего успешного выполнения модели, параметр lag_tolerance в dbt State выполняет сравнение относительно актуальности исходных данных.
Расширенное обнаружение изменений — dbt State может обнаруживать и игнорировать изменения файлов, которые не влияют на фактическую логику преобразований, например добавление комментария или удаление лишних пробелов.
Если вы использовали оркестрацию с учётом состояния до 1 июня 2026 года, вы можете продолжать ею пользоваться. После запуска бесплатного пробного периода dbt State он будет продлён сверх стандартных 30 дней. Если продление не применилось к вашей учётной записи, обратитесь к команде по работе с вашим аккаунтом. Подробную информацию об оплате после окончания пробного периода см. в разделе Использование и стоимость dbt State.