Monitore os custos usando tabelas do sistema
Este artigo explica como você pode usar a tabela system.billing.usage
por conta própria ou unida a outras tabelas do sistema para obter uma imagem do uso do Azure Databricks da sua conta. Os seguintes artigos específicos de funcionalidades também estão disponíveis:
- Monitore os custos de computação sem servidor
- Monitorar custos de trabalho e desempenho
- Monitorizar custos de serviço do modelo
Como ler a tabela de utilização
Os usuários com permissões para acessar os dados da tabela do sistema podem visualizar e consultar os logs de faturamento de suas contas, localizados em system.billing.usage
. Cada registro de cobrança inclui colunas que atribuem o valor de uso aos recursos, identidades e produtos específicos envolvidos.
- A coluna
usage_metadata
inclui uma estrutura com informações sobre os recursos ou objetos envolvidos no uso. - A coluna
identity_metadata
inclui informações sobre o usuário ou entidade de serviço que incorreu no uso. - A coluna
custom_tags
inclui tags aplicadas ao recurso de computação associado ao uso. Isso também inclui tags adicionadas por políticas de orçamento para que você possa atribuir o uso sem servidor. - As colunas
billing_origin_product
eproduct_features
fornecem informações sobre o produto exato e os recursos usados.
Para obter uma referência completa da tabela de uso, consulte Referência da tabela do sistema de uso faturável.
Operacionalizar dados de faturamento
A Databricks recomenda utilizar dashboards de IA/BI para criar dashboards de monitorização de custos com os dados de faturação das tabelas do sistema. Você pode criar um novo painel ou os administradores de conta podem importar um painel de monitoramento de custos pré-criado e personalizável. Consulte os Painéis de Utilização.
Também pode adicionar alertas às suas consultas para o ajudar a manter-se informado sobre os dados de utilização. Consulte Criar um alerta.
Exemplos de consultas
As consultas a seguir fornecem exemplos de como você pode usar os dados da tabela system.billing.usage
para obter informações sobre o uso da sua conta.
- Quantas DBUs de cada produto foram utilizadas ao longo deste mês?
- Quais trabalhos consumiram mais DBUs?
- Quanto uso pode ser atribuído a recursos com uma tag específica?
- Mostre-me os produtos onde o uso está crescendo
- Qual é a tendência de uso do All Purpose Compute (Photon)?
- Qual é o consumo de DBU de uma visualização materializada ou tabela de streaming?
- Qual é o consumo de DBU de um pipeline DLT sem servidor?
- Qual é a tendência diária no consumo de DBU?
Quantas DBUs de cada produto foram utilizadas ao longo deste mês?
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
Quais trabalhos consumiram mais DBUs?
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 a recursos 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. Certifique-se de substituir a chave e o valor da tag personalizada na consulta.
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 os produtos onde o uso está crescendo
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 "2024-04-01" and "2024-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
"2024-05-01" and "2024-05-30"
GROUP BY
billing_origin_product
) as after
WHERE
before.billing_origin_product = after.billing_origin_product
SORT BY
growth_rate DESC
Qual é a tendência de uso do All Purpose Compute (Photon)?
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 > "2024-04-15"
GROUP BY
sku_name, usage_date
Qual é o consumo de DBU de uma visualização materializada ou tabela de streaming?
Para obter a utilização de DBU e o SKU para uma exibição materializada ou tabela de streaming específica, submeta uma consulta à tabela do sistema de utilização faturável para os registos nos casos em que usage_metadata.dlt_pipeline_id
está definido como o ID do pipeline associado à exibição materializada ou tabela de streaming. Pode encontrar o ID do pipeline no separador Detalhes no Gerenciador de Catálogos ao visualizar a vista materializada ou a tabela de streaming. Para limitar o consumo por data, especifique uma data de início, uma data de término ou um intervalo de datas. A consulta a seguir recupera o uso de DBU para o pipeline com ID 00732f83-cd59-4c76-ac0d-57958532ab5b
e uma data de início de uso de 2024-05-30
:
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
GROUP BY
ALL
Qual é o consumo de DBU de um pipeline DLT sem servidor?
Para obter a utilização de DBU e SKU para uma canalização DLT sem servidor, envie uma consulta para a tabela do sistema de usos faturáveis para os registos em que usage_metadata.dlt_pipeline_id
está definido como o identificador da canalização. Você pode encontrar o ID do pipeline no separador Pipeline Details ao visualizar um pipeline na interface Delta Live Tables. Para limitar o consumo por data, especifique uma data de início, uma data de término ou um intervalo de datas. A consulta a seguir obtém o uso do DBU em dezembro de 2024 para o pipeline com o ID 00732f83-cd59-4c76-ac0d-57958532ab5b
.
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 no consumo de DBU?
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
Exemplos de junções de tabelas de uso
Os exemplos a seguir mostram maneiras de unir a tabela de uso com outras tabelas do sistema para obter informações adicionais.
- Atribua os custos ao proprietário do cálculo
- Enriqueça o uso com um nome de trabalho
- Una o preçário às tabelas de uso
- Estimar os custos adicionais para uso no mês anterior
Atribuir custos ao proprietário da computação
Se você estiver procurando reduzir os custos de computação, poderá usar essa consulta para descobrir quais proprietários de cluster em sua conta estão usando mais DBUs.
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 >= '2023-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;
Enriqueça o uso com um nome de trabalho
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"
Combine os preços com tabelas de uso
A tabela list_prices
inclui preços de tabela ao longo do tempo para cada SKU disponível. Pode juntar-se à tabela usage
para ver o custo de listagem de determinada utilização.
Por exemplo, a consulta a seguir retorna o custo total atribuído a uma tag específica durante um mês:
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 "2024-05-01" AND "2024-05-31"
Estimar os custos adicionais para uso no mês anterior
Esta consulta aplica uma percentagem simples a toda a utilização no período. Observe que isso pode diferir ligeiramente da monetização real devido à forma como os direitos de alguns complementos são gerenciados. Substitua a taxa de complementos pela taxa da sua conta.
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 "2024-02-01" AND "2024-02-29"