BigQuery Slot vs On-Demand Advisor
Paste 30 days of hourly aggregates from your own INFORMATION_SCHEMA and get a modelled recommendation: stay on-demand, or commit N baseline slots with autoscale. Runs entirely in your browser — nothing is uploaded.
Everything runs in your browser. This page has no server to upload to — open your network tab and watch. The extract below returns hourly totals only: no query text, no table names, no user identities.
Step 1 — run this in BigQuery
-- Finitizer Slot Advisor extract - hourly aggregates only.
-- Returns no query text, no table names, and no user identities.
SELECT
TIMESTAMP_TRUNC(creation_time, HOUR) AS hour,
COUNT(*) AS jobs,
SUM(total_bytes_billed) AS bytes_billed,
SUM(total_slot_ms) AS slot_ms,
APPROX_QUANTILES(
SAFE_DIVIDE(
total_slot_ms,
NULLIF(TIMESTAMP_DIFF(end_time, start_time, MILLISECOND), 0)
), 100
)[OFFSET(95)] AS p95_concurrent_slots_in_hour
FROM `region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
WHERE creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
AND job_type = 'QUERY'
AND statement_type != 'SCRIPT'
AND total_slot_ms IS NOT NULL
GROUP BY hour
ORDER BY hour;Needs bigquery.jobs.listAll on the project (or organization). The query itself scans no table data, so it costs nothing.
Step 2 — paste the results
Assumptions
How the model works
For every 50-slot baseline candidate, the model walks your hourly demand and charges the baseline continuously plus any autoscaled overflow, rounded up to the next 50 slots. It keeps the cheapest baseline per edition, then compares the winner against your on-demand cost for the same period. Four choices push the answer toward not moving:
- Idle hours are counted. The extraction query only returns hours that ran something, but baseline slots bill through the quiet ones, so missing hours are refilled as zero-demand before simulating. Skipping this is the easiest way to overstate savings.
- Demand is inflated by a slot-efficiency haircut. A fixed reservation cannot pack work as tightly as on-demand’s elastic pool. The default assumes 85% efficiency; you can change it.
- Hourly resolution understates bursts. One-minute minimums and scale-down lag are invisible at hourly granularity, so spiky workloads will cost more in reality than modelled — and get a warning saying so.
- List prices only. No committed-use or enterprise discount is applied to either side.
If the model still recommends moving after all four, the finding is worth acting on.
Frequently asked questions
Should I use BigQuery on-demand or Editions slots?
On-demand bills scanned bytes; Editions bills slot-time. Editions usually wins for steady, high-utilization workloads where reserved capacity stays busy, and loses for intermittent ones where baseline slots bill through idle hours. The crossover depends on your workload shape, not just your spend, which is why this tool asks for hourly slot data rather than a single monthly number.
How many BigQuery slots do I need?
Divide your total slot-milliseconds in an hour by 3,600,000 to get average concurrent slots for that hour. The right baseline is not the peak — it is the level above which autoscaling is cheaper than paying for idle capacity, which this tool finds by testing every 50-slot increment against your actual hourly demand.
Is BigQuery flat-rate pricing still available?
No. Flat-rate and the legacy flex slots were replaced by Editions (Standard, Enterprise, and Enterprise Plus), which combine an optional committed baseline with autoscaling above it. Commitment discounts now apply to baseline slots only.
How does BigQuery autoscaling billing work?
Slots are added above your baseline in increments of 50 and carry a one-minute minimum billing period by default. Baseline slots bill continuously whether or not any query runs. That combination is why a bursty workload can cost more under Editions than its average slot usage suggests. BigQuery fluid scaling, which you opt into per reservation, bills autoscaled slots per second with no minimum duration and removes that penalty — this tool has an option for it.
Does this include BigQuery storage costs?
No, and deliberately. Editions and on-demand differ only in how compute is billed; storage, streaming inserts, and BI Engine cost the same under both. Including them would add the same number to both sides and change no decision, so both figures here are compute only and will not reconcile to your total BigQuery bill.
Is it safe to paste my BigQuery data into this page?
The extraction query returns hourly aggregates only — job counts, bytes billed, and slot-milliseconds. It contains no query text, no table or dataset names, and no user identities. The page has no backend and makes no network requests with your data; all computation happens in your browser and you can verify that in the network tab.
This is a 30-day snapshot. Your workload moves.
Finitizer re-evaluates the slot decision continuously, catches the drift that makes a good commitment go bad, and finds the specific queries driving your scan volume — including an AI rewriter that shows the cheaper version of each one. Read-only and keyless.