共用方式為


監視無伺服器計算的成本

本文說明如何使用計費使用量系統數據表來監視無伺服器計算使用量的成本。

您可以透過查詢計費使用量系統資料表來監控筆記本和作業的無伺服器計算使用情況,該資料表包含與無伺服器計算成本相關的使用者和工作負載屬性。 適用的欄位包括:

  • identity_metadata 欄包含 run_as 欄位,其顯示的是用來執行工作負載的使用者或服務主體的認證。
  • usage_metadata 資料行具有描述工作負載的欄位:job_run_idjob_namenotebook_id notebook_path

備註

由於我們的分散式架構,你可能會在特定時間內看到多個紀錄與某個無伺服器計算工作負載相關聯。 例如,你可能會看到多筆記錄,其中每個記錄的 job_idjob_run_idjob_name 相同,但 DBU 消耗值不同。 這些 DBU 的總和代表該時間內特定工作執行的每小時 DBU 消耗量。

其他功能會以無伺服器計費

有多個 Azure Databricks 功能可在背景利用無伺服器計算,但不需要為您的帳戶啟用筆記本、工作流程和 Lakeflow Spark 宣告式管線的無伺服器計算。

下列功能會在無伺服器作業 SKU 底下計費:

  • 資料品質監控:已在計費資料表中記錄,值billing_origin_productLAKEHOUSE_MONITORING
  • 預測優化:使用billing_origin_product的值PREDICTIVE_OPTIMIZATION記錄在計費數據表中。
  • Databricks SQL 中的具體化檢視:當您在 SQL 倉儲中建立具體化檢視時,會建立無伺服器管線來處理重新整理。 您可以查詢 billing_origin_product = 'SQL'usage_metadata.dlt_pipeline_id IS NOT NULL 的記錄,來檢視具現化視圖的帳單紀錄。
  • 專用運算的細粒度訪問控制:可藉由 billing_origin_productFINE_GRAINED_ACCESS_CONTROL 值識別。
  • 無塵室:與用途相關的特定無塵室會記錄在usage_metadata.central_clean_room_id下。

使用預算來監視支出

帳戶管理員可以設定預算,以將成本分組並設定警示。 請參閱 建立和監視預算

匯入使用方式儀表板

帳戶管理員可以將成本管理儀表板匯入其帳戶中任何已啟用 Unity 目錄的工作區。 請參閱 匯入使用量儀錶板

在UI中尋找作業或筆記本

若要根據帳單記錄在UI中尋找作業或筆記本,請從使用量記錄複製 usage_metadata.job_idusage_metadata.notebook_id 值。 這些標識碼是不可變的,即使作業名稱或筆記本路徑變更,也可以使用。

在UI中根據其 job_id 尋找工作的方式是:

  1. 從使用量記錄複製job_id。 在這裡範例中,假設識別碼為 700809544510906
  2. 導覽至與作業相同的 Azure Databricks 工作區中的 作業和管線 介面。
  3. 選取 [ 可供我存取 ] 篩選條件。
  4. 將標識碼 (700809544510906) 貼到 [篩選工作 ] 搜尋列中。

若要根據UI中的notebook_id尋找筆記本,請使用下列指示:

  1. 從使用量記錄複製notebook_id。 在這裡範例中,假設識別碼為 700809544510906
  2. 請進入與筆記本相同的 Azure Databricks 工作區中的 工作區 介面。
  3. 使用滑鼠按一下清單中的任何筆記本。
  4. 開啟筆記本之後,請檢查瀏覽器網址列中的URL。 應顯示為 https://<account-console-url>/?o=<workspace ID>#notebook/<notebook ID>/command/<command ID>
  5. 在瀏覽器網址列中,將筆記本 ID 替換為您在第一步中複製的 ID,然後刪除筆記本 ID 之後的所有內容。 應顯示為 https://<account-console-url>/?o=<workspace ID>#notebook/700809544510906
  6. 開啟筆記本之後,您可以按兩下 [ 共用] 按鈕來檢視筆記本擁有者。

使用警示來追蹤無伺服器支出

警示是一種強大的方式,讓您隨時瞭解無伺服器運算的支出。 透過警示,您可以在查詢結果中符合特定條件時收到通知。 若要瞭解如何建立警示,請參閱 建立警示

您可以將警示新增至下列查詢,以監視預算。 在每個查詢中,將 {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