| Platform | Compute unit | Billed | Idle compute | Storage (list) |
|---|---|---|---|---|
| Snowflake | Credit per warehouse-hour | Per second, 60 s minimum | Auto-suspend: $0 | $23/TB-month |
| BigQuery 1 | TiB scanned or slot-hour | Per query, or per second | On-demand: $0 | ~$0.023/GiB-month |
| Redshift 24 | RPU-hour or node-hour | Per second, 60 s minimum | Serverless: $0 | $0.024/GB-month |
| Databricks 2,717 SQL | DBU per warehouse-hour | While running | Auto-stop: $0 | Your object storage |
| Fabric / Synapse | CU-hour or DWU-hour | Per second, 1 min minimum | Paused: $0 | $0.026/GB or $23/TB |
The units differ, so compare a workload, not a price. The model below prices one BookNest-sized month from the list rates above: a warehouse busy two hours a day, 150 GB scanned a day, 30 GB stored:
"""Monthly list-price estimate of one small workload on five warehouses (2 Oct 2026 rates)."""
HOURS = 60 # warehouse busy 2 hours a day, suspended otherwise
SCAN_TIB = 4.4 # BigQuery on-demand: 150 GB scanned a day for 30 days
STORE_GB = 30 # compressed sales mart plus history
def snowflake(): # Standard edition, AWS us-east-1: $2.00/credit, X-Small = 1 credit/hour
return HOURS * 1 * 2.00 + STORE_GB / 1000 * 23.00
def bigquery(): # on-demand $6.25/TiB after 1 free TiB; logical storage beyond 10 GiB
return max(SCAN_TIB - 1, 0) * 6.25 + max(STORE_GB - 10, 0) * 0.000031507 * 730
def bigquery_slots(): # Standard edition, 100 slots at $0.04 per slot-hour, same busy hours
return HOURS * 100 * 0.04 + max(STORE_GB - 10, 0) * 0.000031507 * 730
def redshift(): # Serverless, 4 RPU minimum base at $0.375/RPU-hour; storage $0.024/GB
return HOURS * 4 * 0.375 + STORE_GB * 0.024
def fabric(paused=True): # F2 = 2 CU at $0.18/CU-hour (East US); OneLake hot $0.026/GB
return (HOURS if paused else 730) * 2 * 0.18 + STORE_GB * 0.026
def synapse(): # dedicated SQL pool DW100c $1.51/hour, paused when idle; $23/TB storage
return HOURS * 1.51 + STORE_GB / 1000 * 23.00
rows = [("Snowflake X-Small", snowflake()), ("BigQuery on-demand", bigquery()),
("BigQuery 100 slots", bigquery_slots()), ("Redshift Serverless 4 RPU", redshift()),
("Fabric F2, paused when idle", fabric()), ("Fabric F2, always on", fabric(False)),
("Synapse DW100c", synapse())]
for name, usd in sorted(rows, key=lambda r: r[1]):
print(f"{name:<28} ${usd:8.2f}")
print("Databricks SQL Serverless: $0.70 per DBU (Azure East US); cost = DBUs x $0.70")Output
BigQuery on-demand $ 21.71 Fabric F2, paused when idle $ 22.38 Redshift Serverless 4 RPU $ 90.72 Synapse DW100c $ 91.29 Snowflake X-Small $ 120.69 BigQuery 100 slots $ 240.46 Fabric F2, always on $ 263.58 Databricks SQL Serverless: $0.70 per DBU (Azure East US); cost = DBUs x $0.70
The ranking follows the model's assumptions: the same 60 hours buy different amounts of work on each platform, and a capacity left running costs twelve times one that pauses. At this size every option costs less than a developer-day a month; at 100 times the size, scan-priced and time-priced models diverge sharply. Measure your own queries on a trial before committing; Choosing an Analytical Stack adds the open-source alternatives.