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

Cost Insights

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 и оркестрации с учётом состояния в различных разрезах:

Cost Insights на панели проектаCost Insights на панели проекта
Cost Insights в CatalogCost Insights в Catalog
Cost Insights в сведениях о заданииCost Insights в сведениях о задании

Предварительные требования​

Чтобы просматривать данные о затратах, убедитесь, что у вас есть:

Инструкции по настройке приведены в разделе Настройка Cost Insights.

Как рассчитываются оценки затрат и их сокращения​

примечание

Оценки затрат предназначены для анализа и оптимизации, а не для сверки счетов.

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 — кредиты за облачные сервисы, вычислительные ресурсы и ускорение запросов, отнесённые к запросу.
  • 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.

Чтобы отнести использование ресурсов к запросам:

  1. dbt определяет, с какими расчётными интервалами пересекается каждый запрос.
  2. dbt рассчитывает, сколько времени запрос выполнялся в каждом интервале.
  3. dbt распределяет DBU пропорционально доле запроса в общем времени выполнения запросов на этом вычислительном ресурсе в том же интервале.

Концептуально:

DBUs_in_window * (query_runtime / total_query_runtime_in_window)

dbt суммирует эти значения по всем пересекающимся интервалам, чтобы получить usage_per_query.

 Amazon RedshiftПредварительная версия

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 * node_count * node_price_per_hour

    Где:

    • 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 использует данные за последние семь дней (при наличии) и выполняет следующие действия:

  1. Рассчитывает среднюю стоимость одного построения модели.
  2. Подсчитывает, сколько раз модель была использована повторно вместо повторного построения.
  3. Умножает количество повторных использований модели на среднюю стоимость одного построения, чтобы определить общее сокращение затрат.

Формула:

average_cost_per_build * reuse_count

dbt рассчитывает сокращение затрат для каждой модели и каждой среды развёртывания (production и staging) на основе недавних запусков.

Дополнительные примечания:

  • dbt ежедневно рассчитывает оценочные затраты и экономию.
  • Ценовые параметры берутся из системных таблиц хранилища данных (при наличии), настроек на уровне подключения или прейскурантных цен по умолчанию.

Пример​

Следующий пример показывает, как dbt рассчитывает сокращение затрат. Рассмотрим последние семь дней и предположим, что модель выполнялась в два разных дня:

ДеньОбщие затратыОбщее количество выполнений
День 1$55
День 2$1010
Итого$1515

Средняя стоимость одного выполнения: $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 к расходам на хранилище данных?
Как увеличение частоты запуска заданий влияет на оценку снижения затрат?
Что произошло с оркестрацией с учетом состояния?

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

0
Loading