Cost limits
A per-query byte limit stops a single expensive statement before it runs, and daily, weekly, or monthly budgets cap how much a person or an organization can scan in a period. Both work from BigQuery's dry-run estimate, so the check happens before anything is billed.
This query is expected to process up to 318.53 GB ($1.99).
Your limit is 160 GB — over by 158.53 GB.
You can run it once with a temporary higher limit (334.46 GB), or update the limit for this tab and run the query.
Per-query limit
Every query is dry-run before it executes. If the bytes it would scan exceed the tab’s limit, it doesn’t run; you get the warning above instead.
- Cancel takes you back to the editor. Nothing runs.
- Maybe it’ll fit runs with the limit unchanged. Dry-run estimates are an upper bound; if the query really does bill more than the limit, BigQuery rejects it and you pay nothing.
- Run once runs with a temporarily higher limit, this time only.
- Update limit & run raises the limit for this tab and runs.
The limit is per tab. The default for new tabs is 100 GB; click the ⚙ at the left of the editor’s status bar to change it for the tab you’re in:
Capping spend per day, week, or month
A budget caps the total bytes you can scan in a day, a week, or a month. A query that would cross the remaining budget stops before BigQuery bills it. Set them in Settings → Limits & Costs → BigQuery Limits; the same section holds the default per-query limit for new tabs.
What gets estimated
The cost shown in the editor is BigQuery’s own dry-run estimate, so it covers everything the dry-run covers, including CREATE TABLE … AS SELECT.
CREATE TEMP TABLE AS SELECT
BigQuery can’t dry-run a CREATE TEMP TABLE. The scan cost, though, comes entirely from the SELECT, so Querylab.io extracts that part and estimates it alone:
CREATE TEMP TABLE daily_metrics AS SELECT user_id, COUNT(*) AS actions FROM `ace-analytics.warehouse.events` WHERE event_date = CURRENT_DATE() GROUP BY user_id;
This works for CREATE TEMPORARY TABLE, CREATE OR REPLACE TEMP TABLE, and selects with CTEs, joins, subqueries and UNION ALL. A temp table created with explicit columns and no AS SELECT shows 0 bytes, since nothing is scanned.
Permanent CREATE TABLE … AS SELECT is dry-run natively by BigQuery; no special handling.
What the limits cover
Both limits apply to queries run from Querylab.io. Scheduled queries and anything run outside the app aren’t covered.