本文解释了如何使用system.billing.usage
表,或将其与其他系统表联接,以了解您帐户的 Azure Databricks 使用情况。 还提供了以下功能特定的文章:
如何读取使用情况表
有权访问系统表数据的用户可以查看和查询其帐户的计费日志(位于该处 system.billing.usage
)。 每个计费记录都包含将使用量归因于相关的特定资源、标识和产品的列。
-
usage_metadata
列包含一个结构,其中包含有关使用情况中涉及的资源或对象的信息。 -
identity_metadata
列包含有关产生使用情况的用户或服务主体的信息。 -
custom_tags
列包括应用于与使用情况关联的计算资源的标记。 此外,还包括无服务器预算策略添加的标记,以便你可以将无服务器使用情况属性化。 -
billing_origin_product
和product_features
列提供有关所使用的确切产品和功能的信息。
如需完整的使用情况表参考,请参阅 计费使用情况系统表参考。
使计费数据可操作
Databricks 建议使用 AI/BI 仪表板来使用系统表计费数据创建成本监视仪表板。 可以创建新的仪表板,或者帐户管理员可以导入预构建的可自定义成本监视仪表板。 请参阅 使用情况仪表板。
还可以向查询添加警报,以帮助你随时了解使用情况数据。 请参阅创建警报。
示例查询
以下查询提供了有关如何使用 system.billing.usage
表数据来深入了解帐户使用情况的示例。
- 在本月,每个产品使用了多少个 DBU?
- 哪些作业消耗了最多的 DBU?
- 可以使用特定标记将多少使用情况归咎于资源?
- 向我展示用量增长的产品
- “所有用途计算”(Photon)的使用趋势是什么?
- 物化视图或流式表的 DBU 消耗量是多少?
- 无服务器管道的 DBU 消耗量是多少?
- DBU 消耗量的日常趋势是什么?
- 将成本归于计算资源所有者
- 通过包括作业名称来扩充使用情况
- 将定价与使用情况表合并
- 估算上一个日历月使用情况的附加成本
在本月,每个产品使用了多少个 DBU?
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
哪些作业消耗了最多的 DBU?
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
可以将多少使用情况归因于具有特定标签的资源?
可以通过各种方式分解成本。 此示例演示如何按自定义标记细分成本。 请务必替换查询中的自定义标记的键和值。
SELECT
sku_name, usage_unit, SUM(usage_quantity) as `Usage`
FROM
system.billing.usage
WHERE
custom_tags [:key] = :value
GROUP BY 1, 2
向我展示使用量增长的产品
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
SORT BY
growth_rate DESC
“所有用途计算”(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 > "2025-04-15"
GROUP BY
sku_name, usage_date
具体化视图或流式处理表的 DBU 使用量是多少?
若要获取特定物化视图或流式处理表的 DBU 使用情况和 SKU,请将查询提交到计费使用情况系统表(system.billing.usage
)。 若要按日期查询消耗量,请指定开始日期、结束日期或日期范围。
以下查询检索具体化视图<catalog>.<schema>.<table>
(全限定名称为users.cost_tracking.mv1
)的DBU用法:
SELECT
sku_name,
usage_date,
SUM(usage_quantity) AS `DBUs`
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' AND
usage_start_time > :usage_start_time
GROUP BY
ALL
无服务器管道的 DBU 消耗量是多少?
若要获取无服务器管道的 DBU 使用情况和 SKU,请提交查询至计费使用情况系统表,查找管道 ID 设置为 usage_metadata.dlt_pipeline_id
的记录。 在 Lakeflow 声明性管道 UI 中查看管道时,可以在 “管道详细信息 ”选项卡上找到管道 ID。 若要按日期限制消耗量,请指定开始日期、结束日期或日期范围。 以下查询检索 ID 为 00732f83-cd59-4c76-ac0d-57958532ab5b
的管道自 2024 年 12 月以来的 DBU 使用情况。
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
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
将成本归因于计算资源所有者
如果您想降低计算成本,可以将usage
表与compute.clusters
表联接,从而找出您帐户中哪些计算资源的所有者正在使用最多的 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 >= '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;
通过包括作业名称来扩充使用情况
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"
将定价与使用情况表联接
list_prices
表包括每个可用 SKU 在不同时期的标价。 你可以联接 usage
表来查看特定使用情况的费用清单。
例如,以下查询返回一个月内特定标签的总成本。
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"
估算上一个日历月使用情况的附加成本
此查询将简单百分比应用于时间段内的所有使用情况。 请注意,这可能与实际货币化略有不同,因为某些加载项的权限管理方式不同。 将附加费率替换为帐户的费率。
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"