BigQuery FinOps Query Pack
A maintained library of INFORMATION_SCHEMA and billing-export queries — one page per question, each with what it returns, how to read it, and what it costs to run. Most of them are free to run because metadata queries scan no bytes.
24 recipes · 19 of them scan no billable bytes.
JOBS, JOBS_TIMELINE and TABLE_STORAGE are qualified by region (`region-us`). COLUMNS, TABLES and TABLE_OPTIONS are qualified by dataset. Mixing the two up is the most common reason a copied INFORMATION_SCHEMA query fails — every recipe here has a picker that fills in the right one.Query cost & performance
Which BigQuery queries cost me the most last month?
Free 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?
Free 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?
Free to runFind the queries that read every partition of a partitioned table — usually the single largest avoidable cost in a BigQuery estate.
Who is running SELECT * against my biggest tables?
Free to runFind the queries reading every column when they need a handful.
Which queries do we run over and over with the same result?
Free to runFind the repeated query shapes that are candidates for a materialized view or a scheduled table.
How much are failed queries costing me?
Free to runJobs that consumed slot time or billed bytes and then errored out.
Who is spending the most in BigQuery?
Free to runCost by user and service account over the last 30 days, with a daily trend.
How do I attribute BigQuery cost to a team or pipeline?
Free 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?
Free to runDaily cache hit rate plus the bytes that caching saved you.
Slots & reservations
What does my hourly BigQuery slot demand look like?
Free 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?
Free 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?
Free to runReservation utilisation by hour — baseline paid for against slot-time consumed.
Which jobs spent the longest waiting to start?
Free to runQueue time by job — the symptom of undersized capacity.
Storage
Which BigQuery tables are costing me the most to store?
Free 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?
Free to runThe active/long-term split by dataset, which decides half your storage bill.
Which BigQuery tables has nobody queried in 90 days?
Free to runStorage you are paying for that nothing reads.
Which partitioned tables have no partition expiration set?
Free to runPartitioned tables that will grow forever because nothing ages out.
How much am I paying for BigQuery time travel and fail-safe?
Free to runThe invisible storage overhead behind frequently-rewritten tables.
Should my dataset use logical or physical storage billing?
Free to runPer-dataset comparison of both billing models at current list prices.
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 are free
INFORMATION_SCHEMA views are served from BigQuery’s metadata layer, not from your table data, so they scan no billable bytes. That is why most of this pack costs nothing to run and why there is no reason not to run it today. The billing-export recipes are the exception — they query a real table, so filter on the partition column before you run one.
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.