BigQuery FinOps Query Pack
Copy ready-made SQL for the common BigQuery cost questions, with notes on how to read each result.
24 recipes · 19 of them read only metadata and cost a fraction of a cent.
JOBS, JOBS_TIMELINE and TABLE_STORAGE need a region (`region-us`). COLUMNS and TABLE_OPTIONS take a region or a dataset. With a dataset they see that one dataset only, so these recipes use the region and check every dataset in it. A wrong qualifier is a common reason a copied INFORMATION_SCHEMA query fails. Every recipe here has a picker that fills it in.Query cost & performance
Which BigQuery queries cost me the most last month?
Under a cent to runRank the last 30 days of queries by bytes billed, with the on-demand dollar cost for each.
Which BigQuery queries burn the most slot time?
Under a cent to runThe ranking that matters if you are on Editions, slot-milliseconds consumed, not bytes scanned.
Which queries are scanning partitioned tables without a partition filter?
Under a cent to runFind the queries that read every partition of a partitioned table. That is usually the single largest avoidable cost in a BigQuery estate.
Who is running SELECT * against my biggest tables?
Under a cent to runFind the queries reading every column when they need a handful.
Which queries do we run over and over with the same result?
Under a cent to runFind the repeated query shapes that are candidates for a materialized view or a scheduled table.
How much are failed queries costing me?
Under a cent to runJobs that consumed slot time or billed bytes and then errored out.
Who is spending the most in BigQuery?
Under a cent to runCost by user and service account over the last 30 days.
How do I attribute BigQuery cost to a team or pipeline?
Under a cent to runBreak query spend down by job label, the only allocation dimension BigQuery gives you.
What is my BigQuery cache hit rate, and why is it so low?
Under a cent to runDaily cache hit rate, with the TiB billed each day beside it.
Slots & reservations
What does my hourly BigQuery slot demand look like?
Under a cent to runThe 30-day hourly profile you need before deciding anything about reservations. Aggregates only, no query text.
Are my BigQuery queries queueing for slots?
Under a cent to runPer-hour slot consumption from JOBS_TIMELINE, which shows concurrency the job table cannot.
Am I actually using the BigQuery slots I am paying for?
Under a cent to runReservation baseline against the slots your jobs use, hour by hour, and how far a commitment would pay.
Which jobs spent the longest waiting to start?
Under a cent to runQueue time by job, the symptom of undersized capacity.
Storage
Which BigQuery tables are costing me the most to store?
Under a cent to runTables ranked by storage, split into active and long-term, logical and physical.
How much of my BigQuery storage is on long-term pricing?
Under a cent to runThe active/long-term split by dataset, which decides half your storage bill.
Which BigQuery tables has nobody queried in 90 days?
Under a cent to runStorage you are paying for that nothing reads.
Which partitioned tables have no partition expiration set?
Under a cent to runPartitioned tables that will grow forever because nothing ages out.
How much am I paying for BigQuery time travel and fail-safe?
Under a cent to runThe invisible storage overhead behind frequently-rewritten tables.
Should my dataset use logical or physical storage billing?
Under a cent to runPer-dataset storage cost under both billing models at US multi-region list prices, beside what each dataset pays today.
Billing export
Which GCP services changed the most month over month?
Scans billing dataService-level month-over-month movement from the billing export.
Which GCP SKUs am I spending the most on?
Scans billing dataThe SKU-level breakdown behind a service total.
How much of my GCP spend has no labels?
Scans billing dataUnallocatable spend by project, the denominator for any showback effort.
What discounts and credits am I actually receiving?
Scans billing dataCredits broken out by type, which is how you verify a CUD is applying.
Which days had abnormal GCP spend?
Scans billing dataDaily cost against a trailing 7-day mean, flagged by standard deviations.
Why metadata queries cost almost nothing
INFORMATION_SCHEMA views are served from BigQuery’s metadata, not from your table data. They are still billed like any query: on demand there is a 10 MB minimum per query and the results are never cached, so every run is charged. A month of job history is usually megabytes, which is a fraction of a cent, and inside the monthly free tier for most projects. That is why “Under a cent to run” marks them here. The billing-export recipes are the exception: they query a real table, so filter on the partition column before you run one.
Want this done on your real bill?
BigQuery Cost Guardrails Setup: We set safe limits on every BigQuery project so one runaway query cannot cost thousands. From $1,500, fixed. Nothing paid upfront.
Related tools
BigQuery Query Cost Analyzer
What a query costs, and which part of it drives the price.
OpenBigQuery Slot vs On-Demand Advisor
Find out whether BigQuery Editions slots would actually save you money.
OpenCost Allocation Score
Score how much of your cloud spend you can assign to a team.
OpenMore tools for: Analytics and warehouses, Billing data, allocation and governance
These are the questions. Finitizer keeps the answers current.
Running twenty-four queries by hand once is a good afternoon. Finitizer runs the equivalent continuously across BigQuery, GCP, and AWS, tracks how each number moves between runs, and turns the findings into assigned tasks or a Terraform PR.
See how Finitizer works