使用系統數據表監視成本
本文說明如何使用 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 耗用量為何?
- 無伺服器 DLT 管線的 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 "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
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
具體化檢視或串流數據表的 DBU 耗用量為何?
要獲取特定具體化檢視或串流表的 DBU 使用量和 SKU,請將查詢提交至可計費使用系統數據表以查找其中 usage_metadata.dlt_pipeline_id
設置為與具體化檢視或串流表相關聯管線 ID 的記錄。 檢視具體化檢視或串流資料表時,您可以在目錄總管中的 [詳細資料] 索引標籤中找到管線 ID。 若要依日期限制耗用量,請指定開始日期、結束日期或日期範圍。 下列查詢會擷取具有標識碼 00732f83-cd59-4c76-ac0d-57958532ab5b
管線的 DBU 使用量,以及 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
無伺服器 DLT 管線的 DBU 耗用量為何?
若要取得無伺服器 DLT 管線的 DBU 使用量和 SKU,請針對 usage_metadata.dlt_pipeline_id
設定為管線標識碼的記錄,將查詢提交至計費使用量系統數據表。 您可以在檢視 Delta Live Tables 使用者介面中的管線時,於 [管線詳細資訊] 索引標籤上找到管線 ID。 若要依日期限制耗用量,請指定開始日期、結束日期或日期範圍。 下列查詢會從 2024 年 12 月擷取標識碼為 00732f83-cd59-4c76-ac0d-57958532ab5b
之管線的 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
使用數據表聯結的範例
下列範例示範如何聯結使用數據表與其他系統數據表,以取得其他深入解析。
將成本歸因於計算資源的擁有者
如果您想要降低計算成本,您可以使用此查詢來找出帳戶中的哪些叢集擁有者使用最多的 DBU。
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;
使用作業名稱擴充使用量
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 "2024-05-01" AND "2024-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 "2024-02-01" AND "2024-02-29"