Compare BigQuery on-demand per-TiB scanning against slot capacity pricing, with pruning and long-term storage.
On-demand BigQuery charges for bytes the engine reads, not bytes stored, so a partition filter and a clustered predicate are the two levers that move the bill most — and a 10 MB floor per referenced table means thousands of tiny queries still add up. Capacity pricing swaps that for a flat slot-hour charge, which wins once your scan volume passes the break-even figure shown here. The same warehouse can cost wildly different amounts depending on whether analysts write filtered queries and whether you reserve slots, and long-term storage silently halves the rate on partitions nobody touches. Confirm the per-TiB and per-slot-hour prices for your region and edition in the Google Cloud pricing calculator.
BigQuery Cost
on-demand = queries × max(bytes touched × (1 − pruning), 10 MB) ÷ 1,024 × per-TiB price; capacity = slots × slot price × hours; storage = active GiB × active price + long-term GiB × long-term price.
on-demand = queries × max(bytes touched × (1 − pruning), 10 MB) ÷ 1,024 × per-TiB price; capacity = slots × slot price × hours; storage = active GiB × active price + long-term GiB × long-term price. On-demand BigQuery charges for bytes the engine reads, not bytes stored, so a partition filter and a clustered predicate are the two levers that move the bill most — and a 10 MB floor per referenced table means thousands of tiny queries still add up. Capacity pricing swaps that for a flat slot-hour charge, which wins once your scan volume passes the break-even figure shown here.
The same warehouse can cost wildly different amounts depending on whether analysts write filtered queries and whether you reserve slots, and long-term storage silently halves the rate on partitions nobody touches. Confirm the per-TiB and per-slot-hour prices for your region and edition in the Google Cloud pricing calculator.
This calculator takes 15 inputs: Queries per month, Average table bytes touched per query, Reduction from partitioning and clustering, Minimum billed bytes per query, On-demand price per TiB scanned, Pricing model, Reserved slots, Price per slot-hour, Hours the reservation is active, Active storage (touched in 90 days), Active storage price per GiB, Long-term storage (idle 90 days), Long-term storage price per GiB, Streaming inserts, Streaming price per GiB. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
Much more. BigQuery is columnar, so it bills only the columns a query reads. Replacing SELECT * with an explicit column list is often a bigger saving than any infrastructure change.