この記事では、 system.billing.usage テーブルを単独で使用する方法、または他のシステム テーブルと結合して、アカウントの Azure Databricks の使用状況を把握する方法について説明します。 次の機能固有の記事も利用できます。
使用状況テーブルを読み取る方法
システム テーブル データにアクセスするアクセス許可を持つユーザーは、 system.billing.usageにあるアカウントの課金ログを表示し、クエリを実行できます。 すべての課金レコードには、使用金額を関連する特定のリソース、ID、製品に属性付けする列が含まれます。
-
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 使用法を取得します。
WITH pipeline_id (
SELECT
usage_metadata.dlt_pipeline_id as pipeline_id
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'
LIMIT 1
)
SELECT
u.sku_name,
u.usage_date,
SUM(u.usage_quantity) AS `DBUs`
FROM
system.billing.usage u JOIN pipeline_id p
WHERE
u.usage_metadata.dlt_pipeline_id = p.pipeline_id
AND u.usage_start_time > :usage_start_time
GROUP BY
ALL
サーバーレス パイプラインの DBU 使用量は何ですか?
サーバーレス パイプラインの DBU 使用量と SKU を取得するには、 usage_metadata.dlt_pipeline_id がパイプラインの ID に設定されているレコードの課金対象の使用状況システム テーブルにクエリを送信します。 パイプライン ID は、Lakeflow 宣言パイプライン UI でパイプラインを表示するときに、[パイプラインの 詳細 ] タブで確認できます。 日付による消費を制限するには、開始日、終了日、または日付範囲を指定します。 次のクエリは、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 テーブルと結合して、アカウント内のどのコンピューティング リソース所有者が最も多くの 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 >= '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 テーブルを結合して、特定の使用状況の一覧のコストを表示できます。
たとえば、次のクエリでは、1 か月間に特定のタグに起因する合計コストが返されます。
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"