Data warehouse pricing follows one of two models: the amount of data each query reads, or the compute capacity kept available over time; in both, storage is billed as a line of its own. On the bill this means that under the first model a single query can set a day's spend, and under the second the capacity costs money even when nobody runs a query.
How it works
| Service | Model | Billed unit | Storage |
|---|---|---|---|
| BigQuery on-demand | Data read | TiB processed, first TiB per month free | Active or long-term, logical or physical, per GiB-month |
| BigQuery editions | Capacity | Slot-hour in Standard, Enterprise, Enterprise Plus | As on-demand |
| Amazon Athena | Data read or capacity | TB scanned, or DPU-hour (Capacity Reservations) | Amazon S3 at S3 rates |
| Amazon Redshift Provisioned | Capacity | Node-hour per node type (RG, RA3, DC2) | Redshift Managed Storage per GB-month for RG and RA3 |
| Amazon Redshift Serverless | Capacity | RPU-hour | Redshift Managed Storage per GB-month |
| Microsoft Fabric | Capacity | F SKU in capacity units (CU) | OneLake per GB-month |
| Azure Synapse Analytics | Capacity or data read | DWU-hour (dedicated SQL pool) or TB processed (serverless SQL pool) | Per TB-month, including seven days of snapshots |
Billing by data read
BigQuery on-demand bills the bytes of the columns a query selects, rounded up to the next MB, with a minimum of 10 MB per table referenced and per query; a LIMIT does not reduce the amount, and cancelling a running job can still cost up to the full price of the query. Athena bills per TB scanned, rounded up to the next MB, with a 10 MB minimum per query; DDL statements and failed queries are free, and cancelled queries are billed for the data scanned up to that point. Amazon S3 charges for reading the data and storing the results on top, failed queries included. Redshift Spectrum bills per TB in the same way for RA3 and DC2 clusters; RG nodes include their own data lake query engine and need no Spectrum, and Redshift Serverless includes it. The Synapse serverless SQL pool bills per TB processed with a 10 MB minimum.
Billing by capacity
BigQuery editions bill slots, which are virtual CPUs, per slot-hour, by default per second with a one-minute minimum; the optional fluid scaling removes the minimum. Redshift Provisioned bills node-hours, with partial hours per second; a paused cluster accrues no on-demand hours, and each cluster earns up to one hour of free Concurrency Scaling credits a day. Redshift Serverless bills RPU-hours per second with a 60-second minimum, on a base capacity of 4 to 1,024 RPUs of 16 GB memory each and an optional maximum in RPU-hours. Athena Capacity Reservations cost per DPU-hour from 4 DPUs, with no charge for data scanned. Microsoft Fabric bills F SKUs per second with a one-minute minimum, pay-as-you-go or reserved; all workloads on a capacity share its CUs, and excess use can be paid as Fabric capacity overage at the pay-as-you-go price. The Synapse dedicated SQL pool costs, for every hour it exists, the highest DWU level of that hour; only a full hour paused saves compute.
Storage apart from compute
BigQuery separates active storage from long-term storage, which covers tables or partitions unchanged for 90 days at a lower price: in europe-west3 half the price under physical billing, and USD 0.016 instead of 0.023 per GiB-month under logical billing. The billing model, logical (uncompressed) or physical (compressed, including time travel and fail-safe), is set per dataset. Redshift Managed Storage costs the same whether data sits on local SSDs or in Amazon S3, and manual snapshots cost extra. Fabric bills OneLake in hot, cool and cold tiers; storage for mirroring replicas is free up to the SKU size in TB, such as 64 TB for F64, and billed above that or while the capacity is paused. Azure Synapse Analytics still had its own pricing page on the read date, and that page says nothing about its relation to Fabric.
What it means for your cost
Query cost lands where the job runs, not on the dataset it reads: BigQuery bills jobs to the billing account of the project they run in, Athena separates teams and limits through workgroups, Redshift Serverless meters RPU-hours per workgroup, and Fabric appears on the Azure bill as a capacity, not as the workspaces that share it. Cost allocation therefore needs project, workgroup or capacity boundaries that follow the teams, and metrics such as cost per report for unit economics depend on the same boundaries. Google's billing export itself lives in BigQuery (Google Cloud billing export), and queries against it are billed like any other.
Under the data read model an expensive query shows as a daily spike that raises an anomaly (cost anomaly detection). Under the capacity model the line is flat, and the question becomes how much of the paid capacity is used. For steady load, commitments lower the price, such as BigQuery slot commitments, Redshift Serverless Reservations or the Fabric reservation (reserved capacity for managed services). Third-party platforms bought through a marketplace appear as marketplace purchases; transactional databases are covered under managed databases, and the object storage Athena reads under block, object and file storage.
Where it goes wrong
- LIMIT used as a cost brake. Symptom: a small result costs a lot. Cause: BigQuery bills the columns read regardless of LIMIT, and Athena always reads uncompressed text files whole.
- Cancelled is not free. Symptom: charges for queries nobody let finish. Cause: BigQuery can bill up to the full cost, and Athena bills the data scanned until the cancellation.
- Idle capacity. Symptom: the same cost at night and at weekends. Cause: a Redshift cluster, a Fabric capacity or a dedicated SQL pool bills while it runs and is never paused.
- Cost in the wrong project. Symptom: the project holding the data looks cheap and the central BI project dear. Cause: queries are billed to the project the job runs in.
- Forgotten storage. Symptom: storage does not fall as expected after data is deleted. Cause: physical billing in BigQuery includes time travel and fail-safe, deleted Fabric workspaces keep costing OneLake storage during their retention period, and manual Redshift snapshots stay.
Example
List prices in USD, read on 2026-10-16, for Frankfurt: BigQuery in europe-west3, AWS in Europe (Frankfurt), Fabric in Germany West Central.
| Service | Compute | Storage |
|---|---|---|
| BigQuery on-demand | 8.125 per TiB after the free first TiB | Active logical 0.023, long-term logical 0.016 per GiB-month |
| BigQuery Standard edition | 0.052 per slot-hour, Enterprise 0.078 | As on-demand |
| Amazon Athena | 5.00 per TB scanned; 0.33 per DPU-hour | S3 rates |
| Redshift Serverless | 0.451 per RPU-hour | 0.0256 per GB-month |
| Microsoft Fabric | F2 0.44 per hour, F64 14.08 per hour | OneLake hot 0.024 per GB-month |
Sources
Read on 2026-10-16. AWS: Amazon Redshift pricing, Amazon Athena pricing. Google: BigQuery pricing, Overview of BigQuery storage. Microsoft: Microsoft Fabric pricing, Understand Microsoft Fabric licenses and capacity, Azure Synapse Analytics pricing.