この記事では、課金対象の使用状況システム テーブルを使用して、サーバーレス コンピューティングの使用量のコストを監視する方法について説明します。
サーバーレス コンピューティングのコストに関連するユーザーおよびワークロード属性が含まれる、課金対象の使用状況システム テーブル (system.billing.usage
) のクエリを実行することで、ノートブックとジョブのサーバーレス コンピューティングの使用量を監視できます。 該当するフィールドは次のとおりです。
identity_metadata
列には、run_as
フィールドが含まれます。これは、ワークロードの実行のために資格情報が使用された、ユーザーまたはサービス プリンシパルを示します。usage_metadata
列には、ワークロードを表すフィールドjob_run_id
、job_name
、notebook_id
、notebook_path
があります。
custom_tags
列。サーバーレス予算ポリシーから継承されたすべてのタグが含まれます。 サーバーレス予算ポリシー属性の使用を参照してください。
サーバーレスとして課金される追加機能
バックグラウンドでサーバーレス コンピューティングを利用する Azure Databricks 機能は複数ありますが、ノートブック、ワークフロー、および Lakeflow 宣言パイプラインのサーバーレス コンピューティングに対してアカウントを有効にする必要はありません。
サーバーレス ジョブ 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
に記録されます。
サーバーレス使用状況レコードに関する考慮事項
サーバーレス使用状況を分析するときには、次の点を考慮してください。
- 特定の 1 時間における特定のサーバーレス コンピューティング ワークロードに、複数のレコードが関連付けられていることがあります。 たとえば、同じ
job_id
、job_run_id
、またはjob_name
を持ち、それぞれ異なる DBU 消費値を持つ複数のレコードが表示される場合があります。 これらの DBU の合計が、特定のジョブ実行における 1 時間あたりの DBU 消費量を集合的に表しています。
予算を使用して支出を監視する
アカウント管理者は、予算を設定してコストをグループ化し、アラートを設定できます。 「予算の作成と監視」を参照してください。
使用状況ダッシュボードをインポートする
アカウント管理者は、コスト管理 ダッシュボードを自分のアカウント内の任意の Unity Catalog 対応ワークスペースにインポートできます。 使用状況ダッシュボードをインポートするを参照してください。
UI でジョブまたはノートブックを検索する
課金レコードに基づいて UI でジョブまたはノートブックを検索するには、使用状況レコードから usage_metadata.job_id
または usage_metadata.notebook_id
値をコピーします。 これらの ID は不変であり、ジョブ名またはノートブック パスが変更された場合でも使用できます。
UI の job_id
に基づく UI でジョブを検索するには、次の操作を行います。
- 使用状況レコードから
job_id
をコピーします。 この例では、ID が700809544510906
であると想定します。 - ジョブと同じ Azure Databricks ワークスペースの [ジョブ] & [パイプライン] UI に移動します。
- 自分がアクセスできるフィルターを選択します。
- ID (700809544510906) を [ジョブのフィルター] 検索バーに貼り付けてください。
UI の notebook_id
に基づく UI でノートブックを検索するには、次の手順を使用してください。
- 使用状況レコードから
notebook_id
をコピーします。 この例では、ID が700809544510906
であると想定します。 - ノートブックと同じ Azure Databricks ワークスペースのワークスペース UI に移動します。
- リスト内の任意のノートブックをクリックします。
- ノートブックを開いた後、ブラウザーのアドレス バーで 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 について報告する
- カスタム タグを共有するワークロードによって消費された、サーバーレス コンピューティング DBU について報告する
合計支出に基づいてサーバーレス ノートブックを並べ替える
このクエリは、ノートブックの一覧と、各ノートブックが消費した DBU 数を、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