# BigQuery Dataset

> BigQuery bills storage per dataset and compute two ways: on-demand per TB scanned, or reserved slot capacity that accrues regardless of query volume. ZopNight inventories datasets via Cloud Asset Inventory, ties storage and analysis charges to actuals from the billing export, and applies rules for long-term storage and scan-heavy patterns.

Source: https://zop.dev/integrations/gcp/bigquery
Updated: 2026-08-19

---

BigQuery is Google Cloud's serverless data warehouse, billed for storage per dataset and for compute either on-demand per TB scanned or through reserved slots. Query patterns and table storage classes have a direct, often invisible, effect on monthly cost.

## Two compute models against one storage meter

Compute is the volatile half of a BigQuery bill. On-demand pricing charges per TB of data scanned by each query, which ties cost directly to how queries are written. A `SELECT *` over an unpartitioned table scans everything, every run. Capacity pricing reserves slots that bill for their commitment whether queries run or not, trading per-query variance for a fixed line. Storage bills separately per dataset, and BigQuery automatically reclassifies a table or partition untouched for 90 days into long-term storage at a lower rate, a discount that a nightly no-op touch job silently forfeits by resetting the clock.

## Dataset inventory tied to billing actuals

ZopDev inventories datasets via Cloud Asset Inventory, ties storage and analysis charges to actuals from the BigQuery billing export, and applies recommendation rules for long-term storage eligibility and scan-heavy query patterns. There is a pleasing symmetry here: ZopDev itself reads billing actuals from a BigQuery export table, so the platform's own cost source is an instance of the resource type it is attributing. Datasets have no off switch, so nothing is scheduled: the levers are query hygiene, partitioning, and expiration.

## Query and retention habits that inflate the bill

The recurring offenders: dashboards that refresh on a timer and rescan whole tables on demand pricing, multiplying a single expensive query by every viewer and interval; unpartitioned event tables where each query pays for the full history rather than the day it needs; and staging or scratch datasets with no table expiration, growing storage forever because nothing forces cleanup.

## Reading a dataset's cost posture in the console

Google Cloud console → BigQuery opens the Explorer, where expanding a dataset shows its tables. A table's Details pane reports logical and physical bytes and its partitioning. An unpartitioned table with a large byte count and frequent queries is the first place scan costs hide.
