How to Audit Your Databricks Bill from the Usage CSV (Feb 2026)
Databricks bills are notoriously opaque. The CSV audit that shows the 5 DBU leaks even Cost Analytics misses — in 60 seconds.
Harinath Mekala
Founder, CARTIEAI
Databricks bills are notoriously opaque. The CSV audit that shows the 5 DBU leaks even Cost Analytics misses — in 60 seconds.
Harinath Mekala
Founder, CARTIEAI
Databricks is the most opaque bill in the cloud world. The platform charges DBUs (Databricks Units) that get multiplied by a per-DBU rate that varies by cluster type, runtime, and Photon — a single number on your bill can be the result of 4 multipliers stacked.
The CSV audit untangles all of it in 60 seconds.
In Databricks:
Or query the underlying system.billing.usage table directly:
SELECT workspace_id, sku_name, usage_quantity, usage_unit, list_cost
FROM system.billing.usage
WHERE usage_date >= current_date - INTERVAL 30 DAYS
ORDER BY list_cost DESC
LIMIT 100;
Look at sku_name containing ALL_PURPOSE_COMPUTE vs JOBS_COMPUTE. All-Purpose DBUs cost ~2× Job DBUs. Most teams accidentally run production ETL on All-Purpose clusters because that's what they used in dev. Move to Job Compute — same exact workload, 50% less.
sku_name containing _PHOTON. Photon doubles your DBU rate but only delivers a speedup on SQL-heavy / vectorized workloads. For ML training, Python UDFs, or simple ETL — Photon is just paying 2× for nothing. We see this everywhere.
You won't find this in the basic CSV — query system.compute.clusters:
SELECT cluster_id, AVG(cpu_utilization) AS avg_cpu, SUM(uptime_seconds) / 3600 AS uptime_hr
FROM system.compute.cluster_utilization
WHERE date >= current_date - INTERVAL 7 DAYS
GROUP BY cluster_id
HAVING avg_cpu < 0.20
ORDER BY uptime_hr DESC;
Any cluster with <20% CPU average and >40 hours uptime is over-sized. Median savings: 30–60% per cluster.
sku_name containing ML. ML Runtime costs ~15% more in DBUs. If you're using it for plain SQL/ETL, you're paying the ML premium for nothing.
sku_name containing SQL_PRO or SQL_SERVERLESS. Default auto-stop is 10 minutes — drop to 1 minute for non-prod and you'll cut idle DBUs 40–80%. (Yes, the cold-start is 8–12 sec. Yes, it's worth it for dev/staging.)
| Cluster | DBU multiplier |
|---|---|
| All-Purpose, Standard | 1.0 (baseline) |
| All-Purpose, Photon | 2.0 |
| Jobs, Standard | 0.5 |
| Jobs, Photon | 1.0 |
| SQL Pro | 0.55 |
| SQL Serverless | 0.7 |
Each multiplier is then multiplied by your list $/DBU rate (depends on plan & cloud — typically $0.40–$0.60 on AWS for All-Purpose).
So All-Purpose + Photon = 4× more expensive than Jobs Standard for the same compute. Most teams have at least one workload misclassified.
In your CSV, pivot:
sku_namelist_costSort descending. The top 5 SKU rows tell you exactly which cluster types are eating your bill. Then drill into each top SKU to find the offending workspace/cluster.
CARTIE's free Databricks bill audit takes your usage CSV and returns:
No workspace admin access needed. CSV in, audit out.
Companion piece: The 6 Hidden Costs of Databricks Nobody Tells You About.
Databricks bills explode quietly — Photon's 2x DBU markup, idle clusters at the 120-minute default, and Serverless's convenience premium combine into a stack th…
THE FINOPS BRIEF
Built for finance & engineering teams who are tired of paying for cloud they don't use. No fluff. Just what works.
Unsubscribe anytime. We never sell your data.

ABOUT THE AUTHOR
Founder, CARTIEAI · Building in public
I'm building CARTIEAI to fix the cloud-cost problem I saw drain millions at companies I worked for — where engineering and finance kept talking past each other. If you liked this post, here's where I share unfiltered notes on building this in public: