本文說明如何使用計費使用量系統數據表來監視無伺服器計算使用量的成本。
您可以透過查詢計費使用量系統資料表來監控筆記本和作業的無伺服器計算使用情況,該資料表包含與無伺服器計算成本相關的使用者和工作負載屬性。 適用的欄位包括:
-
identity_metadata欄包含run_as欄位,其顯示的是用來執行工作負載的使用者或服務主體的認證。 -
usage_metadata資料行具有描述工作負載的欄位:job_run_id、job_name、notebook_id和notebook_path。
- 列
custom_tags,其中包含繼承自無伺服器預算政策的任何標籤。 請參閱 無伺服器預算原則中的屬性使用。
備註
由於我們的分散式架構,你可能會在特定時間內看到多個紀錄與某個無伺服器計算工作負載相關聯。 例如,你可能會看到多筆記錄,其中每個記錄的 job_id、job_run_id 或 job_name 相同,但 DBU 消耗值不同。 這些 DBU 的總和代表該時間內特定工作執行的每小時 DBU 消耗量。
其他功能會以無伺服器計費
有多個 Azure Databricks 功能可在背景利用無伺服器計算,但不需要為您的帳戶啟用筆記本、工作流程和 Lakeflow Spark 宣告式管線的無伺服器計算。
下列功能會在無伺服器作業 SKU 底下計費:
-
資料品質監控:已在計費資料表中記錄,值
billing_origin_product為LAKEHOUSE_MONITORING。 -
預測優化:使用
billing_origin_product的值PREDICTIVE_OPTIMIZATION記錄在計費數據表中。 -
Databricks SQL 中的具體化檢視:當您在 SQL 倉儲中建立具體化檢視時,會建立無伺服器管線來處理重新整理。 您可以查詢
billing_origin_product = 'SQL'和usage_metadata.dlt_pipeline_id IS NOT NULL的記錄,來檢視具現化視圖的帳單紀錄。 -
專用運算的細粒度訪問控制:可藉由
billing_origin_product的FINE_GRAINED_ACCESS_CONTROL值識別。
-
無塵室:與用途相關的特定無塵室會記錄在
usage_metadata.central_clean_room_id下。
使用預算來監視支出
帳戶管理員可以設定預算,以將成本分組並設定警示。 請參閱 建立和監視預算。
匯入使用方式儀表板
帳戶管理員可以將成本管理儀表板匯入其帳戶中任何已啟用 Unity 目錄的工作區。 請參閱 匯入使用量儀錶板。
在UI中尋找作業或筆記本
若要根據帳單記錄在UI中尋找作業或筆記本,請從使用量記錄複製 usage_metadata.job_id 或 usage_metadata.notebook_id 值。 這些標識碼是不可變的,即使作業名稱或筆記本路徑變更,也可以使用。
在UI中根據其 job_id 尋找工作的方式是:
- 從使用量記錄複製
job_id。 在這裡範例中,假設識別碼為700809544510906。 - 導覽至與作業相同的 Azure Databricks 工作區中的 作業和管線 介面。
- 選取 [ 可供我存取 ] 篩選條件。
- 將標識碼 (700809544510906) 貼到 [篩選工作 ] 搜尋列中。
若要根據UI中的notebook_id尋找筆記本,請使用下列指示:
- 從使用量記錄複製
notebook_id。 在這裡範例中,假設識別碼為700809544510906。 - 請進入與筆記本相同的 Azure Databricks 工作區中的 工作區 介面。
- 使用滑鼠按一下清單中的任何筆記本。
- 開啟筆記本之後,請檢查瀏覽器網址列中的URL。 應顯示為
https://<account-console-url>/?o=<workspace ID>#notebook/<notebook ID>/command/<command ID>。 - 在瀏覽器網址列中,將筆記本 ID 替換為您在第一步中複製的 ID,然後刪除筆記本 ID 之後的所有內容。 應顯示為
https://<account-console-url>/?o=<workspace ID>#notebook/700809544510906。 - 開啟筆記本之後,您可以按兩下 [ 共用] 按鈕來檢視筆記本擁有者。
使用警示來追蹤無伺服器支出
警示是一種強大的方式,讓您隨時瞭解無伺服器運算的支出。 透過警示,您可以在查詢結果中符合特定條件時收到通知。 若要瞭解如何建立警示,請參閱 建立警示。
您可以將警示新增至下列查詢,以監視預算。 在每個查詢中,將 {budget} 替換為您選擇的預算。
過去 30 天內任何工作區支出超過閾值時發出警示
每當此查詢傳回資料列時,您可以設定要觸發的警示。 以您選擇的預算取代 {budget} 。
SELECT
t1.workspace_id,
SUM(t1.usage_quantity * list_prices.pricing.default) as list_cost
FROM system.billing.usage t1
INNER JOIN system.billing.list_prices on
t1.cloud = list_prices.cloud and
t1.sku_name = list_prices.sku_name and
t1.usage_start_time >= list_prices.price_start_time and
(t1.usage_end_time <= list_prices.price_end_time or list_prices.price_end_time is null)
WHERE
t1.sku_name LIKE '%SERVERLESS%'
AND billing_origin_product IN ("JOBS", "INTERACTIVE")
AND t1.usage_date >= CURRENT_DATE() - INTERVAL 30 DAYS
GROUP BY
t1.workspace_id
HAVING
list_cost > {budget}
當使用者在過去 30 天內超過閾值時發出警示
每當此查詢傳回資料列時,您可以設定要觸發的警示。 以您選擇的預算取代 {budget} 。
SELECT
t1.identity_metadata.run_as,
SUM(t1.usage_quantity * list_prices.pricing.default) as list_cost
FROM system.billing.usage t1
INNER JOIN system.billing.list_prices on
t1.cloud = list_prices.cloud and
t1.sku_name = list_prices.sku_name and
t1.usage_start_time >= list_prices.price_start_time and
(t1.usage_end_time <= list_prices.price_end_time or list_prices.price_end_time is null)
WHERE
t1.sku_name LIKE '%SERVERLESS%'
AND billing_origin_product IN ("JOBS", "INTERACTIVE")
AND t1.usage_date >= CURRENT_DATE() - INTERVAL 30 DAYS
GROUP BY
t1.identity_metadata.run_as
HAVING
list_cost > {budget}
當作業在過去 30 天內超過閾值時發出警示
每當此查詢傳回資料列時,您可以設定要觸發的警示。 以您選擇的預算取代 {budget} 。
SELECT
t1.workspace_id,
t1.usage_metadata.job_id,
SUM(t1.usage_quantity * list_prices.pricing.default) as list_cost
FROM system.billing.usage t1
INNER JOIN system.billing.list_prices on
t1.cloud = list_prices.cloud and
t1.sku_name = list_prices.sku_name and
t1.usage_start_time >= list_prices.price_start_time and
(t1.usage_end_time <= list_prices.price_end_time or list_prices.price_end_time is null)
WHERE
t1.sku_name LIKE '%SERVERLESS%'
AND billing_origin_product IN ("JOBS")
AND t1.usage_date >= CURRENT_DATE() - INTERVAL 30 DAYS
GROUP BY
t1.workspace_id, t1.usage_metadata.job_id
HAVING
list_cost > {budget}
範例查詢
使用下列查詢來深入瞭解您帳戶中的無伺服器使用量:
根據總支出排序無伺服器筆記本
此查詢會傳回筆記本清單,並依照每個筆記本的 DBU 耗用量以遞減順序顯示數目。
SELECT
usage_metadata.notebook_id,
usage_metadata. notebook_path,
SUM(usage_quantity) as total_dbu
FROM
system.billing.usage
WHERE
usage_metadata.notebook_id is not null
and billing_origin_product = 'INTERACTIVE'
and product_features.is_serverless
and usage_unit = 'DBU'
and usage_date >= DATEADD(day, -30, current_date)
GROUP BY
1,2
ORDER BY
total_dbu DESC
根據總支出排序無伺服器的工作
此查詢會傳回一個任務清單,以及每個任務所耗用的 DBU 數量,並按 DBU 消耗量以遞減順序排列。
SELECT
usage_metadata.job_id,
usage_metadata.job_name,
SUM(usage_quantity) as total_dbu
FROM
system.billing.usage
WHERE
usage_metadata.job_id is not null
and usage_unit = 'DBU'
and usage_date >= DATEADD(day, -30, current_date)
and sku_name like '%JOBS_SERVERLESS_COMPUTE%'
GROUP BY
1,2
ORDER BY
total_dbu DESC
特定使用者消耗 DBU 的報告
此查詢會傳回使用特定使用者或服務主體所執行無伺服器計算的筆記本和作業清單,以及每個工作負載所取用的 DBU 數目:
SELECT
usage_metadata.job_id,
usage_metadata.job_name,
usage_metadata.notebook_id,
usage_metadata. notebook_path,
SUM(usage_quantity) as total_dbu
FROM
system.billing.usage
WHERE
identity_metadata.run_as = '<emailaddress@domain.com>'
and billing_origin_product in ('JOBS','INTERACTIVE')
and product_features.is_serverless
and usage_unit = 'DBU'
and usage_date >= DATEADD(day, -30, current_date)
GROUP BY
1,2,3,4
ORDER BY
total_dbu DESC
報告共用自定義標籤之工作負載所耗用的無伺服器計算 DBU。
此查詢會傳回一份工作清單,這些作業會使用共用相同自定義標籤的無伺服器計算,以及每個工作負載所耗用的 DBU 數目:
SELECT
usage_metadata.job_id,
usage_metadata.job_name,
usage_metadata.notebook_id,
usage_metadata. notebook_path,
SUM(usage_quantity) as total_dbu
FROM
system.billing.usage
WHERE
custom_tags.<key> = '<value>'
and billing_origin_product in ('JOBS','INTERACTIVE')
and product_features.is_serverless
and usage_unit = 'DBU'
and usage_date >= DATEADD(day, -30, current_date)
GROUP BY
1,2,3,4
ORDER BY
total_dbu DESC