Skip to content
Finitizer

BigQuery Slot vs On-Demand Advisor

Find out whether BigQuery Editions slots would cost less than on-demand pricing, using 30 days of your own job history.

Google CloudReads your own dataBring a file
New here? See what this tool does, how to use it and how to get your data.

Learn more

BigQuery Slot vs On-Demand Advisor

What this free tool does for you

Before you commit to BigQuery Editions slots, find out whether they would really cut your bill or leave you paying for idle hours. The answer is tested against 30 days of your own usage.

How to use it

  1. Choose Use my data for an answer from your usage, or Quick estimate if you only know your spend.
  2. Set the Region your data lives in, so the prices match.
  3. Under Step 1: run this in BigQuery, pick the same region, click Copy SQL, and run it in BigQuery.
  4. Paste the output under Step 2: paste the results, or click Upload CSV. Try sample data shows an example.
  5. Read the Monthly saving, a range, then What if you grow? to see if a commitment stays safe as usage changes.

Good to know

  • Only know your spend? Quick estimate does not guess your slot usage. It shows the Break-even peak slots for each edition, so you know what to measure.
  • Compute only. Storage costs the same either way, so it is left out. The figures will not match your total BigQuery bill.
  • Private. Everything runs in your browser and nothing you paste is sent. The query returns hourly totals only, with no query text or table names.

Not sure where to get the data? .

Before you start: what to have readyShow
  • Thirty days of hourly aggregates from INFORMATION_SCHEMA. The query to produce them is on this page. Thirty days matters: slot commitments are sized against your peaks, and a week does not contain enough of them.
  • The right region qualifier. JOBS and JOBS_TIMELINE are region-scoped, so a query against the wrong region returns nothing rather than an error.
  • All the projects that share the reservation. A commitment belongs to one administration project and region. Include every project assigned to its reservations.

Everything runs in your browser. Nothing you paste is transmitted. 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.
-- Slot time is booked to the hour it was used (JOBS_TIMELINE), so a job that
-- runs for three hours counts in each of them. Bytes and job counts come from
-- JOBS, by the hour each job was created. Script parents are left out, so a
-- script's statements are counted once.
WITH slot_time AS (
  SELECT
    TIMESTAMP_TRUNC(period_start, HOUR)                      AS hour,
    SUM(period_slot_ms)                                      AS slot_ms
  FROM `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_PROJECT
  WHERE job_creation_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 31 DAY)
    AND period_start >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
    AND job_type = 'QUERY'
    AND (statement_type != 'SCRIPT' OR statement_type IS NULL)
  GROUP BY hour
),
job_totals AS (
  SELECT
    TIMESTAMP_TRUNC(creation_time, HOUR)                     AS hour,
    COUNT(*)                                                 AS jobs,
    SUM(total_bytes_billed)                                  AS bytes_billed,
    APPROX_QUANTILES(
      SAFE_DIVIDE(
        total_slot_ms,
        NULLIF(TIMESTAMP_DIFF(end_time, start_time, MILLISECOND), 0)
      ), 100
    )[OFFSET(95)]                                            AS p95_job_avg_slots
  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' OR statement_type IS NULL)
    AND total_slot_ms IS NOT NULL
  GROUP BY hour
)
SELECT
  COALESCE(j.hour, s.hour)                                   AS hour,
  IFNULL(j.jobs, 0)                                          AS jobs,
  IFNULL(j.bytes_billed, 0)                                  AS bytes_billed,
  IFNULL(s.slot_ms, 0)                                       AS slot_ms,
  j.p95_job_avg_slots                                        AS p95_job_avg_slots
FROM job_totals j
FULL OUTER JOIN slot_time s ON s.hour = j.hour
ORDER BY 1;

Needs BigQuery Job User (to run a query) and BigQuery Resource Viewer (bigquery.jobs.listAll) on the project, or Resource Viewer on the organization for the whole organization. It reads job metadata, not your tables. INFORMATION_SCHEMA queries are billed like any other query, with a 10 MB minimum, which for 30 days of jobs is usually a fraction of a cent.

Step 2: paste the results

Assumptions
Not modeled: idle slot sharing. Reservations in the same admin project and region share unused capacity for free, ahead of autoscale. If you run more than one reservation, real Editions cost is lower than shown here.

Prices verified 23 Oct 2026. Public list prices in USD for US multi-region, before any discount you have negotiated.

Want this done on your real bill?

BigQuery Slot Management: We pick the right BigQuery pricing model for each project, then set it up and tune it. From $1,500, fixed. Nothing paid upfront.

See the service

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. Autoscaling bills the slots it adds, not the slots your queries use. The saving is shown at 85% efficiency (you can change it) and at 65%, with the point where it breaks even.
  • Hourly resolution understates bursts. Autoscaled slots bill for at least 60 seconds each time, which hourly averages cannot see. Short dashboard queries can cost several times the estimate unless fluid scaling is on, and every Editions verdict says so.
  • List prices only. No committed-use or enterprise discount is applied to either side.

The verdict leads with pay-as-you-go autoscale, which you can undo; a commitment is listed as an optional extra. Before committing, run pay-as-you-go autoscale for two weeks and compare period_autoscale_slot_seconds in INFORMATION_SCHEMA.RESERVATIONS_TIMELINE with this estimate.

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). Standard is autoscaling only. Enterprise and Enterprise Plus can add a baseline and capacity commitments, whose discounts apply to baseline slots only. Google also sells spend-based BigQuery CUDs, which this tool does not model.

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. You pay for the slots autoscaling adds, not the slots your queries use. Baseline slots bill continuously whether or not any query runs. That 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, removes the one-minute minimum but keeps the 50-slot steps, so it shrinks 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. All computation happens in your browser and none of the pasted data is transmitted anywhere.

Related tools

More tools for: Analytics and warehouses, Pricing and commitments

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.

See how Finitizer works

Rate this tool

How would you rate the BigQuery Slot vs On-Demand Advisor?