Pular para o conteúdo principal

Monitore os custos usando tabelas do sistema

Este artigo explica como o senhor pode usar a tabela system.billing.usage sozinha ou em conjunto com outras tabelas do sistema para obter uma imagem do uso do account's Databricks. Os seguintes artigos específicos de recursos também estão disponíveis:

Como ler a tabela de uso​

Os usuários com permissões de acesso aos dados da tabela do sistema podem acessar view e consultar o faturamento de account logs, localizado em system.billing.usage. Cada registro de faturamento inclui colunas que atribuem o valor de uso ao recurso, às identidades e ao produto específicos envolvidos.

  • A coluna usage_metadata inclui uma estrutura com informações sobre o recurso ou objetos envolvidos no uso.
  • A coluna identity_metadata inclui informações sobre o usuário ou a entidade de serviço que incorreu no uso.
  • A coluna custom_tags inclui tags aplicadas ao recurso compute associado ao uso. Isso também inclui tags adicionadas por políticas de uso de computação serverless , para que você possa atribuir o uso serverless .
  • As colunas billing_origin_product e product_features fornecem ao senhor informações sobre o produto exato e o recurso utilizado.

Para obter uma referência completa da tabela de uso, consulte Referência da tabela do sistema de uso faturável.

Operacionalize os dados de cobrança​

Databricks Recomenda-se utilizar AI/BI painéis de controlo de custos( ) para criar painéis de monitorização de custos utilizando dados de faturação da tabela do sistema. É possível criar um novo painel ou os administradores d account podem importar um painel de monitoramento de custos pré-criado e personalizável. Consulte Painéis de uso.

O senhor também pode adicionar alerta às suas consultas para ajudá-lo a manter-se informado sobre os dados de uso. Consulte Criar um alerta.

Exemplos de consultas​

As consultas a seguir fornecem exemplos de como o senhor pode usar os dados da tabela system.billing.usage para obter percepções sobre o uso do seu site account.

Quantas DBUs de cada produto foram usadas ao longo deste mês?​

SQL
SELECT
billing_origin_product,
usage_date,
sum(usage_quantity) as usage_quantity
FROM system.billing.usage
WHERE
month(usage_date) = month(NOW())
AND year(usage_date) = year(NOW())
GROUP BY billing_origin_product, usage_date

Qual trabalho consumiu mais DBUs?​

SQL
SELECT
usage_metadata.job_id as `Job ID`, sum(usage_quantity) as `Usage`
FROM
system.billing.usage
WHERE
usage_metadata.job_id IS NOT NULL
GROUP BY
`Job ID`
ORDER BY
`Usage` DESC

Quanto uso pode ser atribuído ao recurso com uma tag específica?​

Você pode dividir os custos de várias maneiras. Este exemplo mostra como dividir os custos por uma tag personalizada. Substitua o nome da tag personalizada ( key ) e o valor na consulta.

SQL
SELECT
sku_name, usage_unit, SUM(usage_quantity) as `Usage`
FROM
system.billing.usage
WHERE
custom_tags [:key] = :value
GROUP BY 1, 2

Mostre-me o produto em que o uso está crescendo​

SQL
SELECT
after.billing_origin_product, before_dbus, after_dbus, ((after_dbus - before_dbus)/before_dbus * 100) AS growth_rate
FROM
(SELECT
billing_origin_product, sum(usage_quantity) as before_dbus
FROM
system.billing.usage
WHERE
usage_date BETWEEN "2025-04-01" and "2025-04-30"
GROUP BY
billing_origin_product
) as before
JOIN
(SELECT
billing_origin_product, sum(usage_quantity) as after_dbus
FROM
system.billing.usage
WHERE
usage_date
BETWEEN
"2025-05-01" and "2025-05-30"
GROUP BY
billing_origin_product
) as after
WHERE
before.billing_origin_product = after.billing_origin_product
ORDER BY
growth_rate DESC

Qual é a tendência de uso do All Purpose compute (Photon)?​

SQL
SELECT
sku_name,
usage_date,
sum(usage_quantity) as `DBUs consumed`
FROM
system.billing.usage
WHERE
year(usage_date) = year(CURRENT_DATE)
AND
sku_name = "ENTERPRISE_ALL_PURPOSE_COMPUTE_(PHOTON)"
AND
usage_date > "2025-04-15"
GROUP BY
sku_name, usage_date

Qual é o consumo DBU de uma tabela materializada view ou de transmissão?​

Para obter o uso de DBU e SKU para uma tabela materializada específica view ou transmissão, envie uma consulta para a tabela do sistema de uso faturável (system.billing.usage). Insira um carimbo de data/hora como parâmetro para consultar os resultados após uma data especificada.

A consulta a seguir recupera o uso de DBU para o materializado view com o nome totalmente qualificado (<catalog>.<schema>.<table>) de users.cost_tracking.mv1:

SQL
WITH pipeline_id AS (
SELECT
usage_metadata.dlt_pipeline_id as pipeline_id
FROM
system.billing.usage
WHERE
usage_metadata.uc_table_catalog = 'users'
AND usage_metadata.uc_table_schema = 'cost_tracking'
AND usage_metadata.uc_table_name = 'mv1'
LIMIT 1
)
SELECT
u.sku_name,
u.usage_date,
SUM(u.usage_quantity) AS `DBUs`
FROM
system.billing.usage u JOIN pipeline_id p
WHERE
u.usage_metadata.dlt_pipeline_id = p.pipeline_id
AND u.usage_start_time > :usage_start_time
GROUP BY
ALL

Qual é o consumo de DBU de um serverless pipeline?​

Para obter o uso de DBU e o SKU de um pipeline serverless, envie uma query para a tabela do sistema de uso faturável para registros em que usage_metadata.dlt_pipeline_id está definido como o ID do pipeline. Você pode encontrar o ID do pipeline na tab Detalhes do Pipeline ao visualizar um pipeline na UI de LakeFlow Pipelines. Para limitar o consumo por data, especifique uma data de início, data de término ou um intervalo de datas. A query a seguir recupera o uso de DBU de dezembro de 2024 para o pipeline com ID 00732f83-cd59-4c76-ac0d-57958532ab5b.

SQL
SELECT
sku_name,
usage_date,
SUM(usage_quantity) AS `DBUs`
FROM
system.billing.usage
WHERE
usage_metadata.dlt_pipeline_id = :dlt_pipeline_id
AND usage_start_time >= :usage_start_time
AND usage_end_time < :usage_end_time
GROUP BY
ALL

Qual é a tendência diária do consumo de DBU?​

SQL
SELECT
usage_date as `Date`, sum(usage_quantity) as `DBUs Consumed`
FROM
system.billing.usage
WHERE
sku_name = "STANDARD_ALL_PURPOSE_COMPUTE"
GROUP BY
usage_date
ORDER BY
usage_date ASC

Atribuir custos ao proprietário do recurso compute​

Se o senhor deseja reduzir os custos compute, pode join a tabela usage com a tabela compute.clusters para descobrir quais proprietários de recursos compute em seu account estão usando mais DBUs.

SQL
SELECT
u.record_id record_id,
c.cluster_id cluster_id,
max_by(c.owned_by, c.change_time) owned_by,
max(c.change_time) change_time,
any_value(u.usage_start_time) usage_start_time,
any_value(u.usage_quantity) usage_quantity
FROM
system.billing.usage u
JOIN system.compute.clusters c
WHERE
u.usage_metadata.cluster_id is not null
and u.usage_start_time >= '2025-01-01'
and u.usage_metadata.cluster_id = c.cluster_id
and c.change_time <= u.usage_start_time
GROUP BY 1, 2
ORDER BY cluster_id, usage_start_time desc;

Enriquecer o uso com um nome de trabalho​

SQL
with jobs as (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM system.lakeflow.jobs QUALIFY rn=1
)
SELECT
usage.*,
coalesce(usage_metadata.job_name, jobs.name) as job_name
FROM system.billing.usage
LEFT JOIN jobs ON usage.workspace_id=jobs.workspace_id AND usage.usage_metadata.job_id=jobs.job_id
WHERE
billing_origin_product="JOBS"

juntar os preços com as tabelas de uso​

A tabela list_prices inclui os preços de tabela ao longo do tempo para cada SKU disponível. O senhor pode join a tabela usage para view o custo de listagem de determinado uso.

Por exemplo, a consulta a seguir retorna o custo total atribuído a uma tag específica durante um mês.

SQL
SELECT
SUM(usage.usage_quantity * list_prices.pricing.effective_list.default)
as `Total Dollar Cost`
FROM system.billing.usage
JOIN system.billing.list_prices ON list_prices.sku_name = usage.sku_name
WHERE usage.custom_tags [:key] = :value
AND usage.usage_end_time >= list_prices.price_start_time
AND (list_prices.price_end_time IS NULL OR usage.usage_end_time < list_prices.price_end_time)
AND usage.usage_date BETWEEN "2025-05-01" AND "2025-05-31"

Estime os custos adicionais para uso no mês civil anterior​

Essa consulta aplica uma porcentagem simples a todo o uso no período. Observe que isso pode diferir um pouco da monetização real devido à forma como os direitos de alguns add-ons são gerenciados. Substitua a tarifa adicional pela tarifa do site account.

SQL
SELECT SUM(usage.usage_quantity * list_prices.pricing.effective_list.default) * :add_on_rate as `Total Add-On Dollar Cost`
FROM system.billing.usage
JOIN system.billing.list_prices ON list_prices.sku_name = usage.sku_name
WHERE usage.usage_end_time >= list_prices.price_start_time
AND (list_prices.price_end_time IS NULL OR usage.usage_end_time < list_prices.price_end_time)
AND usage.usage_date BETWEEN "2025-02-01" AND "2025-02-29"