Source order
- Azure workspace plus managed resource group ActualCost for financial totals.
- Databricks
system.billingusage for DBU, SKU, billing-origin product, and workload attribution. - Billing custom tags and Job/resource tags for project allocation; ThinkPlatform Query Tags, Query History, and run metadata for recent cause attribution.
- Duration, scan bytes, rows, and run counts as diagnostic proxies when direct allocation is unavailable.
Reconciliation
Keep these buckets separate:exact: billing usage directly tagged or uniquely mapped to a project/workload. Do not present a proportional share of financial ActualCost as exact.estimated: project ActualCost allocated by that project’ssystem.billingcustom-tagged list cost divided by total list cost for the same period.unallocated: cost that cannot be mapped safely.
Useful metrics
- Daily cost and seven-day moving average.
- DBU and ActualCost by SKU, billing-origin product, workload, Warehouse, and Job.
- Warehouse active minutes, idle tail after the last query, starts, and queries per active minute.
- Query count, distinct SQL hashes, cache-hit ratio, failure ratio, p95 duration, and scan bytes.
- Job attempted/successful runs, retries, success rate, p95 duration, and cost per successful run.
- Cost per successful output row only when output counts are reliable.
null/unknown, not zero. Keep confirmed workload counts and observation coverage together; a zero count with incomplete Job task data is only a lower bound.
Timing and confidence
- Recent Azure ActualCost or
system.billingrows can be delayed or corrected. Mark incomplete days. - A
system.billingread can start the configured SQL Warehouse even though it is non-mutating. Prefer cached overviews and avoid concurrent forced refreshes. - Query History is better for current behavior but is not the financial ledger.
- Query Tags provide a strong recent shared-Warehouse activity signal, but do not become
system.billing.custom_tagsand therefore do not allocate financial cost by themselves. - A Warehouse tag identifies ownership/configuration, not which project caused every shared query.
- Job tags and IDs can support exact allocation only when their lifecycle and project mapping are authoritative.
high, medium, or low confidence for each finding and explain the limiting evidence.