Which tables have a BigQuery cost
| Table | Cost |
|---|---|
| Google BigQuery table | Every sync runs a query in the Google Cloud project the table reads |
| Attribution table on the GA4 BigQuery export | Every build runs queries in the export's project |
| Attribution table on a Lens event table | None of its own |
| Joined, Union and Pivot tables built on BigQuery tables | None of their own. The table page shows what the BigQuery tables they read cost |
| BigQuery datasets in a semantic model | Queried in your project each time a question is asked; not synced, so no sync cost is shown |
Google bills the project the query runs in, not TagPipes. Every dollar figure is an estimate.
Before you save: the estimate
On a BigQuery table's setup page, the line above Save reads, for example:
Estimated scan per sync: 12 GB, about $0.07 (about $2.20 / month at daily)
- It is a free BigQuery dry run of exactly the query the sync would run. Nothing is queried or billed until the table syncs.
- It updates as you change the project, dataset, table, query, columns, Backfill Days or schedule.
- The monthly figure assumes 720 runs for Hourly, 30 for Daily, about 4.3 for Weekly and 1 for Monthly. Manual and cascade schedules have no monthly figure.
- "No estimate yet" means the form is not complete enough to build the query. "Could not reach BigQuery for an estimate" does not affect saving.
An attribution table on the GA4 export shows the same estimate as BigQuery scanned per sync when you click Check Setup.
After a sync: the BigQuery Cost panel
The table page has a BigQuery Cost panel:
| Line | Example |
|---|---|
| Last run | Last run: 36 GB, about $0.20 |
| Monthly | About $6.10 / month at daily (average of the last 5 runs) |
| Who pays | Billed to the Google Cloud project example-analytics |
The monthly figure averages up to the last 5 runs. Each run's bytes are also listed in the table's sync history. Before the first run, the panel says the cost shows after the next sync. The table list shows the last run on each BigQuery table's card.
Pricing for this project
In the BigQuery Cost panel, pick how the project pays and click Save Pricing:
| Setting | Effect |
|---|---|
| On demand (default) | Pays per byte scanned. Dollars are worked out at the price per TiB |
| Flat rate | Editions or reservations: the project pays for slot capacity, so only bytes are shown |
| Price per TiB, US dollars | Optional, on demand only. Leave empty for Google's list price ($6.25 per TiB); set it if your billing account has negotiated pricing |
Pricing only changes the figures Lens shows. It never changes the sync.
How the numbers are worked out
| Rule | Detail |
|---|---|
| Unit | 1 TiB = 1,099,511,627,776 bytes. Sizes are shown in decimal units (MB, GB, TB), as the BigQuery console shows them |
| Free tier | The first 1 TiB each month is free per billing account, so your bill can be lower than the estimate |
| Small amounts | Anything under one cent shows as "under $0.01" |
| Older runs | Runs recorded before bytes billed was stored use bytes processed, and say so |
Keep the cost down
- Keep Backfill Days to the history you chart: a BigQuery table re-reads its whole window on every sync.
- Pick only the columns you need; BigQuery bills by the columns a query reads.
- Use Daily rather than Hourly unless you need intraday data.