BigQuery Cost Guardrails SetupCould one runaway BigQuery query cost you thousands before anyone notices?
Safer defaults on every BigQuery project, set up with your team and proven before you pay
In late 2025 Google began capping on-demand BigQuery queries by default: 200 TiB a day for a new project, about $1,250 a day at list price, and a cap sized to its own last 30 days for an older project that had none. Those defaults stop a catastrophe, not an expensive mistake: per-user limits are still off, per-query limits are off, and scheduled queries run uncapped. We set guardrails sized to how you actually use BigQuery, fix the tables that cost most to scan, wire alerts into Slack, and prove each one works. Fixed price, nothing paid upfront.
Your team's time: about 4 hours in total, for access, the working session that applies the changes, and the two readouts.
- Price
- From $1,500, fixed
- Timeline
- 1 to 3 weeks, then a 30-day check
- Control
- Your engineer applies every change
- Proof
- Every guardrail tested with you
Is this right for you?
A good fit if
- Analysts, dashboards or dbt run on-demand queries, and one unfiltered query on a large table could scan many terabytes.
- Your projects still run on Google's default caps, which allow about $1,250 of queries a day per project, with no limit per user or per query.
- Scheduled queries and pipelines run unattended every hour, and nothing caps what each one can scan.
- You have learned about a BigQuery spike from the invoice rather than from an alert.
- You are a startup CTO or data platform lead who wants this done properly once, without hiring for it.
Probably not for you if
- You spend under about $500 a month on BigQuery in one project. Start with the free BigQuery Cost Check at tools.finitizer.com/bigquery-cost-check.
- You want every cost driver analyzed and ranked: queries, storage, slots and editions. Take the BigQuery and Databricks Cost Audit, which includes a guardrails checklist.
- You want someone to change your settings without your team. Every change is applied by your engineer, with us on a call.
What you walk away with
A known worst-case day
Daily quotas per project and per user, sized from your own 90-day peaks with headroom, so normal work never notices them and the most a mistake can cost in a day is a number you approved.
Expensive accidents that fail instead of billing
Byte limits on dbt and BI tools, a cap for every scheduled query, and partition filters required on the tables that cost most to scan, so the classic full-table scan fails before it runs.
An alert the same day, not on the invoice
A runaway-query alert in Slack that names the job, the user and the cost, plus budgets and Google's free cost anomaly alerts routed to the people who can act.
What is included
What the service covers. Each package under Pricing lists exactly which of these it includes and how much of your estate it covers.
Exposure check and gap review
Your worst-case day in dollars today, then every project in scope checked against 90 days of its own job history: quotas, byte limits, scheduled queries, partition filters, expiration, storage billing model, budgets and alerts.
Daily quotas per project and per user
The "query usage per day" and "query usage per day per user" quotas set on each project from your real peak days, with headroom. Where you use BigQuery AI functions, their daily token quotas too, since the byte quotas do not cover them.
A cap on everything that runs unattended
Maximum bytes billed in your dbt profiles and BI connections such as Looker. Scheduled queries cannot carry a per-query cap, so each one runs as a dedicated service account under a per-user quota, or in a project of its own with a tight daily cap.
Partition and cluster fixes on your top tables
The tables that cost most to scan, found from your job history (5 on Starter, 20 on Team, 40 on Org): partitioning, clustering and a required partition filter, written as DDL with the queries, views and dbt tests that need a filter added first, so nothing breaks.
Runaway-query alerts in Slack
A Cloud Monitoring alert on bytes billed and a scheduled check that flags any single job over your cost threshold, sent to Slack and email, plus budgets filtered to BigQuery and Google's free cost anomaly detection routed to the right people.
Guardrails for slots, too
Byte quotas do not apply to queries on reservations. For projects on BigQuery editions we set the reservation ceilings, per-project slot caps and a default query timeout, and tell you whether a reservation would pay for an on-demand project.
Proof, then a 30-day check
In the working session we prove every guardrail: an oversized test query must fail without charge, and a test alert must reach Slack. Thirty days later we compare cost, bytes billed and blocked queries with the 30 days before.
What we hand over
- Exposure check: your worst-case day before and after, in dollars
- A change pack: the exact gcloud, bq and SQL commands, dbt and BI settings for every change, each with its rollback (Terraform on Org)
- Quota and byte-limit sizing from your own peak days
- Partition and clustering DDL for your top tables, with the queries to update first
- Runaway-query alert and budgets, running in your project and owned by you
- Runbook: what to do when a quota or a limit trips, including the break-glass path
- Before and after report at 30 days
How it works
Day 0
Free scoping call and exposure check
Thirty minutes on your projects and how queries reach BigQuery: analysts, BI tools, dbt, scheduled queries. We tell you your worst-case day today, and if your projects are already well guarded, we say so and you do not need us. You get a one-page order that matches a package.
Day 1
Grant read access, or send the exports
Viewer roles on the projects in scope for a dedicated Finitizer reader identity, about five minutes in Cloud Shell. Or export the job history and settings yourself with the steps on the data upload help page.
Days 2 to 5
Gap review and change pack
We size every quota and limit from your own peak days, choose the tables to fix, and write the exact commands with their rollbacks. You see the plan, and your new worst-case day, before anything changes.
Days 5 to 15
Working session: apply and prove
On a call with your engineer, in your console, your engineer applies the changes, lowest risk first: alerts and budgets, then quotas and byte limits, then table changes. Then we prove each guardrail together. Starter takes one session; Org takes several.
After the working session
Readout
What is in place, what each guardrail stops, and the runbook for when one trips.
30 days after go-live
The 30-day check
We compare the 30 days after with the 30 days before, review every quota and alert that fired, and adjust any limit that was too tight or too loose.
Pricing
One fixed fee per engagement, agreed before we start, with no upfront payment: 50% is invoiced once the guardrails are applied and proven in the working session, and 50% after the 30-day check. Pay by card or bank transfer. Prices are in US dollars and exclude applicable taxes.
Starter
Up to 3 projects in one region, your top 5 tables, about 1 week
Typical BigQuery spend: $500 to $5,000 a month
$1,500USD, one-time
- Exposure check and gap review
- Daily quotas per project and per user
- Byte limits on 1 dbt target and 1 BI connection
- A cap for every scheduled query
- Runaway-query alert and BigQuery budget to Slack and email
- Partition and cluster fixes on your top 5 tables
- Proof test and 30-day check
Team
Up to 10 projects in two regions, your top 20 tables, about 2 weeks
Typical BigQuery spend: $5,000 to $30,000 a month
$3,500USD, one-time
- Everything in Starter, for up to 10 projects
- Byte limits on up to 3 dbt targets and 3 BI tools
- Partition and cluster fixes on your top 20 tables
- Labels standard and budgets per team
- Guardrails for projects on editions, and a reservation break-even check
- A fire drill your team runs with us
Org
Up to 30 projects across your organization, your top 40 tables, 3 to 4 weeks
Typical BigQuery spend: $30,000 a month and up
$6,500USD, one-time
- Everything in Team, for up to 30 projects
- Every project that can run BigQuery jobs found and covered
- Guardrails as a Terraform module for your repository
- Folder and organization budgets
- Partition and cluster fixes on your top 40 tables
- A second check at 90 days
- Guardrail Watch after the 30-day check: alerts mirrored to a shared Slack channel and triaged within a business day, quotas re-sized every month, and a fire drill every quarter. $375 a month for up to 10 projects, $750 a month on Org, or included in FinOps-as-a-Service.
- More than 30 projects: $200 per extra project. Several organizations? Book a call for a quote.
- Take the BigQuery and Databricks Cost Audit within 60 days and the full Guardrails fee is credited, or buy both together for 15% off.
Proven before you pay the second half
Before handover we prove every guardrail with you: an oversized test query fails without being billed, and a test alert reaches Slack. If a guardrail we set up does not work, at handover or in the 90 days after, we fix it free, and if we cannot, you do not pay the second half. We do not promise a savings figure: guardrails mostly prevent the next spike, and the 30-day check reports what changed.
How ordering works
We reply within one business day
With times for a free 30-minute scoping call, or straight away with the order if your email already tells us enough.
You get a one-page order
It confirms the package, scope, dates, price and when each invoice is due. Nothing is binding until you sign it, and we sign your NDA first if you have one.
Kickoff
We send the access steps and your secure upload links, and the work starts on the agreed date.
Nothing paid upfront
Fixed fees are invoiced in two halves: 50% at the milestone your order names, usually about halfway, and 50% on completion. Monthly services are invoiced at the end of each month. Card or bank transfer.
The data we need from you
Quotas and limits are sized from your own job history, so we need 90 days of it, plus a list of what is already set. Grant read access and we collect it, or export it with the steps on the help page.
- If you grant access: BigQuery Resource Viewer and BigQuery Metadata Viewer on each project in scope, and Service Usage Viewer so we can read the current quotas. These roles read; they cannot change anything.
- If you export instead: 90 days of INFORMATION_SCHEMA.JOBS_BY_PROJECT for each project and region, the table storage and partitioning views, and the current guardrail settings: quotas, scheduled queries, table options, budgets and dbt profile limits. The Data upload help page has the exact queries.
- Optional: the BigQuery lines of your Cloud Billing export for the same period, so the before and after check is priced at exactly what you pay.
How it reaches us: Exports go through a secure, customer-specific upload link we send you at kickoff. Uploaded files are stored encrypted in Finitizer's Google Cloud environment in the US, used only for your engagement, deleted automatically 90 days after upload, and deleted sooner on request. Query text, where present, is used only to find the queries a guardrail would have stopped.
Step-by-step: how to export and upload this dataAccess and security
We read job, table and quota metadata. We never read the data in your tables, and we never hold permission to change a quota, a table, an alert or a budget.
- Read roles are granted per project to a dedicated Finitizer reader identity, using short-lived impersonation tokens. No keys are created and no organization-level role is needed.
- Your engineer applies every change from the change pack, with us on the call. Quotas need Quota Administrator; table options need BigQuery Data Editor on the dataset; budgets need Billing Account Costs Manager; alerts need Cloud Monitoring alert and notification editor roles. You keep those roles; we never ask for them.
- The alerts, budgets and checks run in your own project and belong to you. Nothing of ours keeps running inside your account.
- Job history includes query text and the user who ran each job; we use them only to size limits and find risky queries, keep them in a dedicated dataset for your company, and delete them on request.
Cannot grant access yet? Run the free BigQuery Cost Check at tools.finitizer.com/bigquery-cost-check. You run three read-only queries yourself, the report is computed in your browser, and we can start the conversation from its results.
Who does the work
A team of FinOps Engineers and FinOps Practitioners. The Finitizer platform does the scanning; the team does the judgment, and every finding is reviewed, priced and explained by a person before you see it.
FinOps Engineers
Connect the read-only access, run the analysis on the Finitizer platform, write the Terraform changes, SQL rewrites and reservation commands, and check every number against your bill.
FinOps Practitioners
FinOps-certified. Review and rank every finding, run your review calls and readouts, build the reporting and the practice around it, and lead the training.
Frequently asked questions
Did Google not fix this in 2025?
Partly. Google announced new default caps for September 2025: new projects get 200 TiB of on-demand queries a day, and older projects that had no cap got one sized to their own last 30 days. That stops a catastrophe, but 200 TiB is about $1,250 a day per project at list price, around $37,500 a month, the per-user quota is still unlimited, and per-query limits are off unless someone sets them. The defaults are a ceiling, not guardrails sized to you.
How bad can a single mistake get?
On-demand BigQuery bills $6.25 for every TiB a query scans, and LIMIT does not reduce the scan on a table that is not clustered. Public examples: a founder whose script queried a public web archive dataset for about two hours was billed around $14,000 (2024), and a team paid about $9,800 for three queries that ran for 22 seconds on a public blockchain table (2025).
Will quotas or byte limits break our pipelines?
Not if they are sized properly, which is the point of the gap review. Every quota and limit is sized from 90 days of your own job history with headroom above your real peaks, applied lowest risk first, and watched for 30 days. One thing to know: when a project's daily quota is used up, BigQuery stops in that project until midnight Pacific time, and raising a quota can need Google's approval, so the runbook includes a break-glass path.
What happens when a query hits maximum bytes billed?
BigQuery estimates how much the query will scan before it runs. If the estimate is above the limit, the query fails with an error that says how much it needed, and nothing is billed. Whoever ran it can raise the limit for that one query if it really needs to scan more.
Why can scheduled queries not have their own byte limit?
Because BigQuery does not offer one for scheduled queries. So we give each scheduled query a cap another way: it runs as a dedicated service account under a per-user daily quota, or from a project of its own with a tight daily cap, or it moves into dbt, where a per-job limit can be set. Every scheduled query in scope ends up with a cap.
Do quotas and byte limits matter if we use editions (slots)?
No: they protect on-demand queries, which are billed by bytes scanned. Queries on a reservation are billed by slot capacity, so their guardrails are the reservation ceiling, per-project slot caps and a default query timeout. Most estates have both, and we cover both.
Do you change our settings yourselves?
No. We hold read-only access. Every change is written as an exact command or setting with its rollback, and your engineer applies it with us on the call, in your console.
How is this different from the BigQuery and Databricks Cost Audit and Slot Management?
The audit analyzes everything that drives the bill and hands you a ranked fix list. Slot Management settles on-demand versus slots and tunes reservations for 60 to 90 days. Guardrails puts limits, filters and alerts in place so the bill cannot run away, and fixes the tables that cost most to scan. Many teams start here, and the fee is credited if you take the audit within 60 days.
Will this lower our bill, or only protect it?
Mostly protect it. The partition and cluster fixes usually cut what the queries on those tables cost, and the 30-day check shows exactly what changed, but we do not promise a savings figure. What you can count on is a worst-case day you approved, proven by test.
How do we pay?
Nothing is paid upfront. Half the fee is invoiced once the guardrails are applied and proven in the working session, and the other half after the 30-day check. Invoices can be paid by card or bank transfer, and we can work with a purchase order.
Ready to start?
Pick a package above, or book a free 30-minute call and we will tell you which one fits, or whether you need one at all. From $1,500 one-time fee.
