Which Pipeline Is Running Up Your Warehouse Bill?
The bill shows what you spent, not which job spent it. Run one read-only query on Snowflake or Databricks, paste the result here, and we email you cost by pipeline, team and layer, with the top 10 waste items and how to fix each one. Nothing connects to your account.
Views and prices checked November 2026.
Where does your data warehouse run?
What the query reads
Usage views only, with each source's documented delay. The query returns totals, never query text.
| Source | What it gives | Delay |
|---|---|---|
| SnowflakeQUERY_ATTRIBUTION_HISTORY | Credits per query, query tag, user and warehouse | Up to 8 hours |
| SnowflakeQUERY_HISTORY | Role, whether the query failed, and remote spill | Up to 45 minutes |
| SnowflakeWAREHOUSE_METERING_HISTORY | Idle credits: metered compute minus compute attributed to queries | Up to 3 hours |
| SnowflakeMETERING_DAILY_HISTORY | Credits billed by service, to reconcile against the bill | Up to 3 hours |
| SnowflakeUSER_AI_USAGE_HISTORY | AI credits by user and by agent or function | Up to 1 hour |
| SnowflakeACCESS_HISTORY (Enterprise and above) | The table each query wrote to, for the layer | Up to 3 hours |
| Databrickssystem.billing.usage and list_prices | DBUs at list price, tags, job and run IDs | Typically within 12 hours |
| Databrickssystem.lakeflow jobs, pipelines and run timelines | Job and pipeline names, failed runs, clusters used by job tasks | Regional |
| Databrickssystem.access.table_lineage | The schema each job writes to, for the layer | Regional |
How layers are worked out: Schema names containing raw, landing, bronze or src count as raw; stg, staging, silver, int or intermediate as transform; mart, marts, gold, analytics or reporting as serve. Anything else is unknown. A layer tag always wins.
Frequently Asked Questions
Why doesn't Snowflake's per-query cost add up to my bill?
Because QUERY_ATTRIBUTION_HISTORY only counts the warehouse time spent running queries. It leaves out warehouse idle time, cloud services, serverless features, AI tokens and queries of about 100ms or less. This tool adds idle time per warehouse from WAREHOUSE_METERING_HISTORY and compares the total with what METERING_DAILY_HISTORY says was billed, so you can see how much of the bill is traced to a pipeline.
How do I find idle warehouse cost in Snowflake?
Subtract CREDITS_ATTRIBUTED_COMPUTE_QUERIES from CREDITS_USED_COMPUTE in WAREHOUSE_METERING_HISTORY, per warehouse. That is Snowflake's own documented method. The column is empty for Adaptive Warehouses, so their idle time can't be split out this way.
How do I see which Databricks job costs what?
system.billing.usage records the job ID and run ID for serverless jobs and jobs on job compute. Join it to system.billing.list_prices for the price and to system.lakeflow.jobs for the job name. Jobs that run on all-purpose compute have no job ID in billing, so their cost can only be traced to the cluster.
How much does a Snowflake credit cost?
On-demand list prices on AWS US East are about $2.00 a credit on Standard, $3.00 on Enterprise and $4.00 on Business Critical, and AI Credits list at $2.00 with global routing. Contract prices are usually lower. If your organization buys directly from Snowflake, ORGANIZATION_USAGE.RATE_SHEET_DAILY shows your effective rate.
Why does the report stop at the start of yesterday?
Usage data arrives late: Snowflake's per-query attribution can lag up to 8 hours, and Databricks billing records typically arrive within 12 hours. Recent hours would show up as false zeros, so the query covers the 30 full days that end at midnight at the start of yesterday.
Is the SQL safe to run on a production account?
Yes. It is a single SELECT over Snowflake's ACCOUNT_USAGE views or Databricks system tables. It changes nothing and returns totals only, never query text. You run it yourself, so nothing connects to your account.