Databricksのコストを正しく配賦するには「タグの一貫性」「使用量ログの活用」「チャージバック計算の自動化」の3つが揃う必要があります。 本稿ではcustom_tagsの設計原則、system.billing.usageテーブルを使ったSQL集計、Cluster Policyによるタグ強制、そしてチャージバックモデルの選択基準を実務に即して解説します。
アトリビューションは「どの組織・プロジェクトが、どのDBU費用を負担するか」を透明化する仕組みです。 DatabricksではDBU(Databricks Unit)消費に加え、クラウド基盤費(VM、ストレージ)も配賦対象になります。
費用をプラットフォーム費(共通基盤の運用コスト)とプロダクト費(プロジェクト個別のコンピュート消費)に分界し、 前者は全社按分、後者はタグベースのチャージバックとするのが定石です。
タグはコスト配賦の「外部キー」です。Databricksのクラスター・ジョブクラスター・プール・SQL Warehouseに設定するcustom_tagsを、 クラウド側の課金タグ(AWS Cost Allocation Tags / Azure Tags / GCP Labels)と揃えます。
キーは少数精鋭にし、値はマスタテーブルで管理します。高カーディナリティ(チケット番号や一時的ID)は避け、安定キーのみ採用します。
| タグキー | 用途 | 値の例 | 管理方針 |
|---|---|---|---|
| cost_center | 費用負担部門の特定 | CC-100, CC-200, CC-999 | 台帳PRで事前登録制 |
| env | 環境区分 | dev, stg, prod | 固定3値 |
| product | プロダクト識別 | recommendation, fraud-detection | 台帳PRで事前登録制 |
| owner | 責任者 | team-data-eng, team-ml | チーム単位(個人名は避ける) |
命名規則は小文字・英数字・ハイフンのみに統一し、各クラウドのタグ制約(Azure: タグ名512文字/値256文字、GCP: ラベルキー63文字)にも適合させます。 不明時のフォールバック値(CC-999等)を定義し、月次で修正要求を出す運用にします。
タグの入力漏れを構造的に防止するには、Cluster Policyでcustom_tagsを必須化し、allowlistで値を制限します。 ジョブクラスター・All-Purposeクラスター・SQL Warehouseすべてに同一キーを適用することで、Billable Usageログ上のtagsフィールドに確実に値が記録されます。
{
"custom_tags.cost_center": {
"type": "allowlist",
"values": ["CC-100", "CC-200", "CC-300", "CC-999"],
"defaultValue": "CC-999"
},
"custom_tags.env": {
"type": "allowlist",
"values": ["dev", "stg", "prod"],
"defaultValue": "dev"
},
"custom_tags.product": {
"type": "allowlist",
"values": ["recommendation", "fraud-detection", "analytics", "platform"],
"defaultValue": "platform"
},
"autotermination_minutes": {
"type": "range",
"minValue": 10,
"maxValue": 120,
"defaultValue": 30
}
}このPolicyをユーザー/グループに割り当てると、タグ未選択ではクラスターを作成できなくなります。 Unrestricted Policyの付与は管理者のみに限定し、一般ユーザーには必ずタグ付きPolicyを適用します。
Unity Catalogのsystem schemaにあるsystem.billing.usageテーブルは、DBU消費をワークスペース・SKU・タグ別に記録したシステムテーブルです。 ここに対してSQLを書くことで、タグベースのコスト集計を直接実行できます。
コストセンター別の月間DBU消費を集計するSQLの例です。
SELECT
usage_metadata.workspace_id,
custom_tags.cost_center AS cost_center,
sku_name,
usage_date,
SUM(usage_quantity) AS total_dbu
FROM system.billing.usage
WHERE usage_date >= '2026-03-01'
AND usage_date < '2026-04-01'
GROUP BY 1, 2, 3, 4
ORDER BY total_dbu DESCプロダクト別・環境別のクロス集計で、開発環境の肥大化を検出する例です。
SELECT
custom_tags.product AS product,
custom_tags.env AS env,
SUM(usage_quantity) AS total_dbu,
ROUND(SUM(usage_quantity) * 0.07, 2) AS estimated_cost_usd
FROM system.billing.usage
WHERE usage_date >= DATE_SUB(CURRENT_DATE(), 30)
GROUP BY 1, 2
HAVING total_dbu > 1000
ORDER BY total_dbu DESC上記のestimated_cost_usdはリスト価格(例: Jobs Compute $0.07/DBU)での概算です。 契約価格が異なる場合は別途単価マスタとJOINしてください。
タグが付いていないリソースの使用量を検出し、月次で是正するクエリ例です。
SELECT
usage_metadata.workspace_id,
usage_metadata.cluster_id,
sku_name,
SUM(usage_quantity) AS untagged_dbu
FROM system.billing.usage
WHERE usage_date >= DATE_SUB(CURRENT_DATE(), 30)
AND (custom_tags.cost_center IS NULL
OR custom_tags.cost_center = 'CC-999')
GROUP BY 1, 2, 3
ORDER BY untagged_dbu DESCCC-999(フォールバック値)に集約された使用量は、月次棚卸しで正しいコストセンターに再配賦します。 このクエリ結果をSQLアラートに接続し、閾値超過時にSlack通知する運用が効果的です。
配賦方法は精度と運用負荷のトレードオフです。以下に代表的なパターンを比較します。
| 配賦方法 | 粒度 | メリット | 注意点 |
|---|---|---|---|
| DBU×タグ直接配賦 | Cluster/Job/SQL Warehouse | 最も正確。system.billing.usageで完結 | タグ100%付与が前提 |
| Workspace分割配賦 | 組織単位でWSを分離 | タグ不要でシンプル | WS乱立による管理負荷増 |
| 共有クラスター按分 | ユーザー/ジョブ実行時間比 | 共有環境で公平 | 追加メトリクス集計が必要 |
| クラウド請求×課金タグ | VM/ディスク/ネットワーク | DB外コストも含む全体像 | Serverlessではタグ付与が限定的 |
実務では「DBU×タグ直接配賦」を主軸とし、タグ欠落分は「CC-999にプール→月次再配賦」、 共有リソースは「実行時間比で按分」、クラウド基盤費は「クラウド請求×共通タグ」で補完するハイブリッドが安定します。
タグベース配賦の全体フローを整理します。各ステップを自動化することで、月次レポートの工数を最小化します。
[Cluster Policy]
└─ custom_tags 必須化 (cost_center, env, product)
│
v
[リソース実行] → Cluster / Job / SQL Warehouse
│ tags 自動記録
v
[system.billing.usage]
│
├─ SQL集計 → コストセンター別DBU
├─ タグ欠落検出 → CC-999レポート
└─ 単価マスタJOIN → 金額換算
│
v
[配賦テーブル (Delta)]
│
├─ 月次スナップショット
├─ 調整仕訳行
└─ ダッシュボード / GL連携タグ台帳(cost_center, product等のマスタ)はGitリポジトリで管理し、値の追加はPRベースの審査制とします。 重複や誤綴りの混入を防ぎ、Policy定義と台帳の同期を維持します。
配賦テーブルはDeltaで管理し、月次締め後に変更が入った場合はTime Travelで締め時点のスナップショットを参照できるようにします。
Administration / Data Engineer
問題 1
データプラットフォームチームが、全プロジェクトのDBU消費をコストセンター別にチャージバックする仕組みを構築する。クラスターとジョブクラスターの両方でcost_centerタグを確実に記録し、月次でSQL集計したい。最も適切なアプローチはどれか。
正解: A
Cluster Policyのallowlistでタグを強制すると入力漏れを構造的に防止でき、system.billing.usageへのSQLでタグ別集計が自動化できます。ドキュメント依頼だけでは強制力がなく漏れが発生します。UCのカタログタグはデータガバナンス用でありDBU配賦の根拠にはなりません。クラウドBillingだけではServerlessリソースのタグが限定的です。
system.billing.usageのデータ保持期間はどれくらいですか?
system.billing.usageテーブルはアカウントレベルで過去365日分のデータを保持します。長期分析にはDeltaテーブルへの定期エクスポートを推奨します。CSVでのUsageダウンロードも可能ですが、system tableに直接SQLを書く方がフィルタや集計の柔軟性が高く、タグ別・SKU別の配賦を自動化しやすいです。
タグを後から変更すると過去の使用量データに遡及反映されますか?
いいえ。タグはリソース実行時点のスナップショットとしてBillable Usageに記録されます。過去レコードの再タグ付けはできないため、月次締め後に誤りが判明した場合は配賦テーブルに調整仕訳行を追加する運用が現実的です。Cluster Policyによるタグ必須化で、記録時点の漏れを構造的に防止するのが最善策です。
Serverless SQL Warehouseでもタグベースのチャージバックは可能ですか?
可能です。ServerlessリソースでもDBU使用量はsystem.billing.usageに記録され、custom_tagsやworkspace_id等のメタデータが含まれます。ただしクラウド基盤(VM/ストレージ)の課金タグはDatabricks側でマネージドされるため、クラウド請求側でのタグ別内訳は限定的です。主軸をDBU配賦に置く設計が安定します。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全7試験・難易度・勉強法
Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...
Databricks試験の難易度ランキング|全7資格を徹底比較
Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...