はじめに
Databricksの料金は、DBU(Databricks Unit)の消費量に応じたDBU料金と、クラウド事業者が別に請求するインフラ料金の2本立てで、全体像をつかみにくいと感じる方も多いのではないでしょうか。
本記事では、AWS上のDatabricksを対象に、システムテーブル system.billing.usage を使って、DBU料金を実績ベースで確認する方法を紹介します。クラウドインフラ費用は対象外です。
料金体系
料金の基本構造
Databricksの料金は、請求元の異なる2つに分かれます。
- Databricks料金(DBU料金): Databricksが請求する、プラットフォーム利用分の料金
- クラウド事業者の料金: AWSが別途請求する、VM・ストレージ・ネットワークなどの料金
今回はDatabricks料金(DBU料金)のみを対象にします。
基本の計算式
DBU料金は、次の式で求められます。
DBU料金 = 消費したDBU数 × DBU単価
DBUはDatabricks独自の処理能力の単位で、秒単位で消費されます。単価は、ワークロードの種類・プラン・クラウドによって異なります。
DBU単価の確認方法
DBU単価は、system.billing.list_prices というテーブルで確認できます。このような system. で始まるテーブルは「システムテーブル」と呼ばれ、課金情報などを参照するためにDatabricksが提供しています。list_prices には単価(定価)の履歴が入っており、単価が変更されるたびにレコードが追加されます。
単価は、課金対象を区別する単位ごとに決められています。この単位を SKU(Stock Keeping Unit)と呼びます。
主な列は次のとおりです。
| 列名 | 説明 |
|---|---|
sku_name | SKUの名前。どの課金対象の単価かを示します。 |
cloud | 単価が適用されるクラウド。AWS、AZURE、GCPのいずれかが入ります |
currency_code | 単価の通貨。例としてUSD(米ドル)が挙げられています |
usage_unit | 単価の基準となる単位。DBU単価の場合は DBU が入ります |
pricing | 単価の情報をまとめた列。複数の種類の価格が入っています |
price_start_time | その単価が有効になった日時。UTC(協定世界時)で記録されます |
price_end_time | その単価が終了した日時。UTCで記録されます |
pricing 列の中身は次のとおりです。
effective_list: 定価とプロモーション価格(期間限定の割引価格)を考慮した、最終的な定価です。料金の計算にはこちらを使いますdefault: 簡易的な見積もり向けの、長期的な定価です
レコードは単価が変わったときだけ追加されるため、特定の日の単価を知りたい場合は、その日以前で最も新しいレコードを取得します。
サンプルクエリ
では実際に以下のクエリを実行してみます。単価の開始日時が新しい順に、3件を取得します。
SELECT *
FROM system.billing.list_prices
ORDER BY price_start_time DESC
LIMIT 3
実行結果は次のとおりです。
以下では一部を仮データとして表示させています。
| account_id | price_start_time | price_end_time | sku_name | cloud | currency_code | usage_unit | pricing |
|---|---|---|---|---|---|---|---|
| — | 2026-08-21T00:00:00.000+00:00 | – | sku_name1 | AWS | USD | DBU | 0.0700(一部省略) |
| — | 2026-08-21T00:00:00.000+00:00 | – | sku_name2 | AWS | USD | DBU | 0.0700(一部省略) |
| — | 2026-08-12T00:00:00.000+00:00 | – | sku_name3 | AWS | USD | DBU | 0.0700(一部省略) |
pricing 列は、3件とも同じ値でした。
{"default":"0.070000000000000000","promotional":{"default":null},"effective_list":{"default":"0.070000000000000000"}}
この結果から該当するSKUの単価1DBUあたり0.07USDであることが分かりました。
課金対象使用量テーブル:system.billing.usage
テーブルの概要
system.billing.usage は、アカウント全体で課金対象となった使用量が記録されるシステムテーブルで、実績ベースで料金を算出するためのテーブルです。
主な特徴は次のとおりです。
アカウント単位で一元管理
使用量のデータはリージョンをまたいで一元化されており、どのリージョンのワークスペースからでも、アカウント全体の使用量を確認できます
反映までの時間
該当テーブルに即時反映はされません。 レコードは通常12時間以内に参照できるようになります。
レコードの内容
system.billing.usage のスキーマ(列の定義)は、次のとおりです。
| 列名 | データ型 | 説明 |
|---|---|---|
record_id | string | この使用レコードの一意のID |
account_id | string | このレポートが生成されたアカウントのID |
workspace_id | string | この使用レコードが関連付けられたワークスペースのID |
sku_name | string | SKUの名前 |
cloud | string | この使用状況に関連付けられたクラウド |
usage_start_time | timestamp | この使用レコードに関連する開始時刻。タイムゾーン情報は、UTCを表す +00:00 が値の末尾に付きます |
usage_end_time | timestamp | この使用レコードに関連する終了時刻。タイムゾーン情報は、UTCを表す +00:00 が値の末尾に付きます |
usage_date | date | 使用状況レコードの日付。このフィールドを使用すると、日付による集計を高速化できます |
custom_tags | map | 使用状況レコードに関連付けられたカスタムタグ |
usage_unit | string | この使用量が測定される単位 |
usage_quantity | decimal | このレコードで消費されたユニット数 |
usage_metadata | 構造体 | コンピュートリソースとジョブ(該当する場合)のIDなど、使用状況に関するシステム提供のメタデータ |
identity_metadata | 構造体 | 使用に関連するIDに関するシステム提供のメタデータ |
record_type | string | レコードがオリジナル(ORIGINAL)、撤回(RETRACTION)、修正(RESTATEMENT)のいずれであるか |
ingestion_date | date | レコードがテーブルに取り込まれた日付 |
billing_origin_product | string | 使用を開始した製品。一部の製品は、異なるSKUとして請求できます |
product_features | 構造体 | 使用されている特定の製品機能の詳細 |
usage_type | string | 課金目的で製品またはワークロードに割り当てられる使用状況のタイプ |
これらのうち、usage_metadata 、identity_metadata 、billing_origin_product 、product_features の列に関しては対象の料金計算を正しく行うために重要な列です。以下について詳しく紹介します。
usage_metadata
概要
- 使用に関わったワークスペースのオブジェクトやリソース(クラスター、ジョブ、SQLウェアハウス、エンドポイントなど)のIDや名前をまとめた列です。
- 料金を、ジョブやクラスター、SQLウェアハウス、エンドポイントなどの単位に分けて、何にいくらかかったかを把握したいときに使います。
詳細
公式ドキュメントに記載されている項目は次のとおりです。
| 項目 | 説明 |
|---|---|
cluster_id | 使用状況レコードに関連付けられたクラスターのID |
job_id | 使用状況レコードに関連付けられたジョブのID |
warehouse_id | 使用状況レコードに関連付けられたSQLウェアハウスのID |
instance_pool_id | 使用状況レコードに関連付けられたインスタンスプールのID |
node_type | コンピュートのインスタンスタイプ。ドライバーノードとワーカーノードは区別しません |
job_run_id | 使用状況レコードに関連付けられたジョブ実行のID |
notebook_id | 使用状況に関連付けられたノートブックのID |
dlt_pipeline_id | 使用状況レコードに関連付けられた宣言型パイプラインのID |
endpoint_name | 使用状況レコードに関連付けられたモデルサービングエンドポイントまたはAI Searchエンドポイントの名前 |
endpoint_id | 使用状況レコードに関連付けられたモデルサービングエンドポイントまたはAI SearchエンドポイントのID |
dlt_update_id | 使用状況レコードに関連付けられたパイプライン更新のID |
dlt_maintenance_id | 使用状況レコードに関連付けられたパイプラインメンテナンスタスクのID |
metastore_id | デフォルトストレージに関連付けられたメタストアのID |
run_name | 使用状況レコードに関連付けられた基盤モデルのファインチューニング実行の、ユーザー向けの名前 |
job_name | 使用状況レコードに関連付けられたジョブの、ユーザー指定の名前 |
notebook_path | 使用状況に関連付けられたノートブックのワークスペースストレージパス |
central_clean_room_id | 使用レコードに関連付けられたセントラルクリーンルームのID |
source_region | 課金対象となるトラフィックの発生元のリージョン。ネットワーク関連の使用でのみ値を返します |
destination_region | 課金対象となるトラフィックの受信先のリージョン。ネットワーク関連の使用でのみ値を返します |
recipient_id | 使用状況レコードに関連付けられたOpenSharingの受信者のID |
associated_product | 使用のきっかけとなった製品。例えば、データベース接続によってネットワーキングの料金が発生する場合があります。使用が上流のソース製品に完全に起因する場合にのみ値が入ります |
networking_client | ネットワーク使用を発生させたクライアント。SERVERLESS_WORKLOAD または EXTERNAL_CLIENT のいずれかです |
app_id | 使用状況レコードに関連付けられたアプリのID |
app_name | 使用状況レコードに関連付けられたアプリの、ユーザー指定の名前 |
private_endpoint_name | この値はDatabricks on AWSでは入力されません |
budget_policy_id | 非推奨です。代わりに usage_policy_id を使用してください。ワークロードに関連付けられたサーバーレス使用ポリシーのIDです |
storage_api_type | デフォルトストレージで実行される操作の種類。TIER_1(PUT、COPY、POST、LIST)と TIER_2(その他の操作)があります |
ai_runtime_workload_id | 使用状況記録に関連付けられたサーバーレスGPUワークロードのID |
uc_table_catalog | 使用記録に関連付けられたUnity Catalogのカタログ名 |
uc_table_schema | 使用状況レコードに関連付けられたUnity Catalogのスキーマ名 |
uc_table_name | 使用状況レコードに関連付けられたUnity Catalogのテーブル名 |
database_instance_id | 使用状況レコードに関連付けられたデータベースインスタンスのID |
sharing_materialization_id | 使用記録に関連付けられた共有マテリアライゼーションのID |
usage_policy_id | 使用記録に関連付けられたサーバーレス使用ポリシーのID |
agent_bricks_id | 使用状況レコードに関連付けられたAgent BricksワークロードのID |
base_environment_id | 使用状況に関連付けられたベース環境のID |
schema_id | 使用状況レコードに関連付けられたスキーマのID |
table_id | 使用状況レコードに関連付けられたテーブルのID |
catalog_id | デフォルトストレージの使用に関連付けられたUnity CatalogのカタログのID |
identity_metadata
概要
- 使用に関わったID(ユーザーやサービスプリンシパル)の情報をまとめた列です。
- 誰が実行したワークロードか、誰が所有・作成したものかを基準に、使用量を把握したいときに使います
詳細
identity_metadata には、次の項目があります。
| 項目 | 説明 |
|---|---|
run_as | ワークロードを実行したユーザーを記録します。値の入り方はワークロードの種類によって異なります |
owned_by | SQLウェアハウスの使用状況にのみ適用されます。使用を担当するSQLウェアハウスを所有するユーザーまたはサービスプリンシパルを記録します |
created_by | Databricks Apps、Knowledge Assistant、Supervisor Agentに適用されます。アプリまたはエージェントを作成したユーザーのメールアドレスを記録します |
billing_origin_product
概要
- 使用を発生させたDatabricks製品を示す文字列の列です。
JOBS、SQL、APPSなどの製品名が入ります - 一部の製品は、同じSKUで課金されます(例: データ品質モニタリング、予測最適化、サーバーレスワークフローは、すべて同じサーバーレスジョブのSKUで請求されます)。SKUだけでは製品を区別できないときに、製品別の使用量を把握するために使います
詳細
billing_origin_product には、次の値があります。
| 値 | 説明 |
|---|---|
JOBS | Lakeflow Jobsワークロードに関連するコスト |
DLT | Lakeflow Pipelinesワークロードに関連するコスト |
SQL | SQLウェアハウス上で実行されるワークロードやマテリアライズドビューを含む、Databricks SQLに関連するコスト |
ALL_PURPOSE | クラシック汎用コンピュートに関連するコスト |
MODEL_SERVING | Model Servingに関連するコスト |
INTERACTIVE | サーバーレスのインタラクティブワークロードに関連するコスト |
DEFAULT_STORAGE | デフォルトストレージに関連するコスト |
VECTOR_SEARCH | AI Searchに関連するコスト |
LAKEHOUSE_MONITORING | データ品質モニタリングに関連するコスト |
PREDICTIVE_OPTIMIZATION | 予測最適化に関連するコスト |
ONLINE_TABLES | オンラインテーブル(レガシー)に関連するコスト |
FOUNDATION_MODEL_TRAINING | 基盤モデルのファインチューニングに関連するコスト |
AGENT_EVALUATION | エージェント評価に関連するコスト |
FINE_GRAINED_ACCESS_CONTROL | 専用コンピュート上のきめ細かいアクセス制御によるサーバーレス使用 |
EXTERNAL_COMPATIBILITY | クロスエンジンABACによるサーバーレス使用 |
BASE_ENVIRONMENTS | ワークスペースのサーバーレスベース環境の構築または更新に関連する使用 |
DATA_CLASSIFICATION | データ分類オペレーションに関連するコスト |
DATA_QUALITY_MONITORING | 異常検出やデータプロファイリングを含む、データ品質モニタリングに関連するコスト |
DATA_SHARING | OpenSharingに関連するコスト |
AI_GATEWAY | AI Gatewayの使用に関連するコスト |
AI_RUNTIME | サーバーレスGPUワークロードに関連するコスト |
NETWORKING | サーバーレスコンピュートをリソースに接続すること、およびパフォーマンス重視の製品でクライアントに戻す下り(エグレス)通信に関連するコスト |
APPS | Databricks Appsの構築と実行に関連するコスト |
DATABASE | LakebaseのオリジナルバージョンであるLakebase Provisionedデータベースインスタンスに関連するコスト |
LAKEBASE | Lakebaseの現行バージョンに関連するコスト |
AI_FUNCTIONS | AI Functionsの使用に関連するコスト。この製品は、AI_PARSE_DOCUMENT、AI_EXTRACT、AI_CLASSIFY の使用を記録します |
AGENT_BRICKS | Knowledge AssistantとSupervisor Agentのワークロードに関連するコスト |
CLEAN_ROOM | Clean Roomsワークロードに関連するコスト |
LAKEFLOW_CONNECT | Lakeflow Connectのマネージドコネクターに関連するコスト |
GENIE | 従量課金制のAI/BI Genieの使用に関連するコスト |
FEATURE_STORE | Feature Storeに関連するコスト |
SUPERVISOR_AGENT | Supervisor Agentワークロードに関連するコスト |
LAKEHOUSE_REAL_TIME | Lakehouse Real-Timeに関連するコスト |
product_features
概要
- 使用された製品の機能の詳細を、キーと値のペアでまとめた列です(
jobs_tier、is_serverless、is_photonなど) - 使うとき:
billing_origin_productとあわせて、同じ製品の使用を、ティア(jobs_tier、sql_tier、dlt_tier)や、サーバーレスかどうか(is_serverless)、Photon(クエリを高速化するエンジン)を使ったか(is_photon)などの機能の違いごとに区別したいときに使います
詳細
product_features は、次のキーと値のペアを含むオブジェクトです。
| フィールド | 説明 |
|---|---|
jobs_tier | 値には LIGHT、CLASSIC、null があります |
sql_tier | 値には CLASSIC、PRO、null があります |
dlt_tier | 値には CORE、PRO、ADVANCED、null があります |
is_serverless | 値には true、false、null があります(サーバーレスとクラシックコンピュートを選択できる場合は true または false、それ以外は null) |
is_photon | 値には true、false、null があります |
serving_type | 値には MODEL、GPU_MODEL、FOUNDATION_MODEL、FEATURE、null があります |
offering_type | 値には BATCH_INFERENCE、null があります |
performance_target | サーバーレスジョブまたはパイプラインのパフォーマンスモードを示します。値には PERFORMANCE_OPTIMIZED、STANDARD、null があります。サーバーレス以外のワークロードは null です |
ai_runtime.compute_type | サーバーレスGPUワークロードのコンピュートタイプ、または null を示します |
model_serving.offering_type | モデルサービングのオファリングタイプ、または null を示します |
ai_gateway.feature_type | AI Gatewayワークロードの機能タイプ、または null を示します |
serverless_gpu.workload_type | AI Runtime(サーバーレスGPU)のワークロードタイプ、または null を示します |
ai_functions.ai_function | AI機能の種類、または null を示します |
networking.connectivity_type | 値には PUBLIC_IP と PRIVATE_IP があります |
agent_bricks.problem_type | Knowledge Assistantワークロードの問題タイプを示します。値には AGENT_BRICKS_KNOWLEDGE_ASSISTANT、null があります |
agent_bricks.workload_type | Knowledge Assistantのワークロードタイプを示します。値には AGENT_BRICKS_REAL_TIME_INFERENCE、null があります |
実行結果では、上の表にない apps、lakeflow_connect、lakebase、ai_bi_genie、genie という項目も確認できました。公式ドキュメントに説明はありません。Databricks Appsの使用である3件目のレコードでは、is_serverless が true、apps の中の compute_size が MEDIUM でした。
実際の確認例
これまでの内容をもとに、3つの利用シーンを想定して、実際にクエリを実行して確認します。
- 確認例1: 月の料金を、SKU別に確認する
- 確認例2: 料金を、製品別に確認する
- 確認例3: 料金の中心となっているリソースや作成者を特定する
確認例1
シーン
月次の料金を把握するため、特定の月のDBU料金を、SKUごとに確認したい。
使用量を記録する system.billing.usage と、単価を記録する system.billing.list_prices を結合して、料金を算出します。
クエリ
SELECT
usage.sku_name,
SUM(usage.usage_quantity) AS dbu,
SUM(usage.usage_quantity * list_prices.pricing.effective_list.default) AS dbu_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_unit = 'DBU'
AND usage.usage_date BETWEEN '2026-09-01' AND '2026-09-30'
GROUP BY usage.sku_name
ORDER BY dbu_cost DESC
結果
実際に実行してみた結果は次のとおりです(料金が大きい上位3件を抜粋)。料金の通貨は、list_prices の currency_code に従います。
なお、以下の値は実際の値ではなく、仮の値に置き換えています。
| sku_name | dbu | dbu_cost |
|---|---|---|
| sku_name1 | 2000.0 | 2800.00 |
| sku_name2 | 24.345 | 26.35 |
| sku_name3 | 18.353 | 20.55 |
確認例2
シーン
料金を、製品ごとに確認したい。SKUだけでは、どの製品の使用か分からない場合があるため、billing_origin_product を使って製品別に集計します。
クエリ
SELECT
usage.billing_origin_product,
usage.sku_name,
SUM(usage.usage_quantity) AS dbu,
SUM(usage.usage_quantity * list_prices.pricing.effective_list.default) AS dbu_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_unit = 'DBU'
AND usage.usage_date BETWEEN '2026-09-01' AND '2026-09-30'
GROUP BY usage.billing_origin_product, usage.sku_name
ORDER BY dbu_cost DESC
確認例1のクエリに billing_origin_product を追加し、製品とSKUの組み合わせごとに集計しています。同じSKUに複数の製品が表示されるかどうかを確認できます。
結果
結果は次のとおりです(料金が大きい上位3件を抜粋)。
なお、以下の値は実際の値ではなく、仮の値に置き換えています。
| billing_origin_product | sku_name | dbu | dbu_cost |
|---|---|---|---|
| VECTOR_SEARCH | sku_name1 | 2000.0 | 2800.00 |
| APPS | sku_name2 | 24.345 | 26.35 |
| SQL | sku_name3 | 1.3532 | 2.553 |
製品別に見ると、料金の大半は VECTOR_SEARCH と APPS が占めていることも分かります。
確認例3
シーン
どのリソースや、誰が作成したものの使用が料金の中心になっているかを特定したい。usage_metadata(エンドポイントやアプリなど)と、identity_metadata(作成者など)を使って集計します。
クエリ
SELECT
usage.billing_origin_product,
usage.usage_metadata.endpoint_name,
usage.usage_metadata.app_name,
usage.identity_metadata.created_by,
SUM(usage.usage_quantity) AS dbu,
SUM(usage.usage_quantity * list_prices.pricing.effective_list.default) AS dbu_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_unit = 'DBU'
AND usage.usage_date BETWEEN '2026-09-01' AND '2026-09-30'
GROUP BY
usage.billing_origin_product,
usage.usage_metadata.endpoint_name,
usage.usage_metadata.app_name,
usage.identity_metadata.created_by
ORDER BY dbu_cost DESC
LIMIT 10
結果
結果は次のとおりです(料金が大きい上位3件を抜粋)。
なお、以下の値は実際の値ではなく、仮の値に置き換えています。
| billing_origin_product | endpoint_name | app_name | created_by | dbu | dbu_cost |
|---|---|---|---|---|---|
| VECTOR_SEARCH | endpoint1 | null | A@—.jp | 2000.0 | 2800.00 |
| APPS | null | app1 | B@—.jp | 24.345 | 26.35 |
| APPS | null | app2 | C@—.jp | 20.001 | 21.665 |
おわりに
本記事では、AWS上のDatabricksを対象に、DBU料金を実績ベースで確認する方法を紹介しました。DBU料金は「消費したDBU数 × DBU単価」で求められ、使用量は system.billing.usage、単価は system.billing.list_prices で確認できます
月次の料金の確認や、料金の内訳の分析に、この方法を活用してみてください。

