Sam Austin AI

Building a Data Warehouse for ML: Snowflake vs BigQuery vs Redshift (2026)

September 8, 2026 15 min read Sam Austin
Contents
Data Warehouse Architecture for ML
Data Warehouse Architecture for ML

Figure 8: Your data warehouse is the foundation every ML pipeline sits on — picking wrong compounds monthly for years

Here's a genuinely uncomfortable data point to open with: a growth-stage SaaS company was paying $108,000 a month for Snowflake, having migrated from Redshift two years earlier specifically expecting savings. They hired a consultant, optimized warehouse sizes, added auto-suspend — the bill kept climbing anyway. The problem was never a missing optimization. It was picking a warehouse architecture that didn't match their actual query patterns in the first place.

This closes out the data-and-MLOps infrastructure arc running through this series at its actual foundation layer — every dbt model, every Feast offline store, every DVC-versioned training snapshot has to physically live somewhere, and that "somewhere" is one of these three warehouses (or increasingly, a fourth option worth naming honestly: Databricks). Picking wrong here isn't a minor inconvenience — it's a decision that compounds every month for years.

By the end of this guide, you'll understand the genuine architectural differences behind the pricing models, real cost numbers at different scales, and — more usefully than any single "winner" — the specific questions that should actually decide your choice. IMO, the single most important sentence in all of this year's comparisons is genuinely: "the most expensive variable in all three is human inattention" :)

The Three Pricing Models, and Why They're Not Actually Comparable

This is genuinely the first thing to understand, because list-price comparisons are actively misleading otherwise — the unit of consumption differs fundamentally across all three platforms.

Snowflake — credit-based compute, separate storage. Storage runs roughly $23-40/TB/month; compute is billed in credits ($2-5 each depending on tier) tied to warehouse size and runtime, billed per-second with a 60-second minimum. Genuinely high predictability — you know exactly what a running warehouse costs per hour, from about $2/hour (small) to $128/hour (extra-large).

BigQuery — pay per byte scanned, or committed slot capacity. On-demand pricing was cut 25% in March 2026, from $6.25 to $4.69 per terabyte scanned. Storage is genuinely the cheapest of the three at $0.02/GiB, with a free tier covering 1TiB of queries and 10GiB of storage monthly. You pay for data touched, not time elapsed — a fundamentally different mental model than the other two.

Redshift — per-hour compute (provisioned or serverless), storage billed separately. Provisioned runs around $0.543/hour per node; Serverless RPU pricing is roughly $1.50/hour. Redshift Serverless, mature by 2026, now offers BigQuery-like automatic scaling, while the provisioned option remains for workloads wanting dedicated, predictable resources.

The genuine trap here: comparing "$/TB scanned" against "$/credit" against "$/node-hour" as if they're the same unit leads people to pick based on numbers that don't actually measure the same thing.

What the Real-World Numbers Actually Show

A genuinely useful like-for-like scenario from current benchmarking: ingesting 5TB/day, running 200 ELT queries daily against a 50TB warehouse, plus 800 BI queries from 50 dashboards.

BigQuery: roughly $300/day (5TB scanned for ingestion + ~50TB for ELT + ~5TB for BI, at current per-TB rates).

Snowflake: roughly $500-750/day, running three separately-sized warehouses (a small loader, an auto-scaling medium for ELT, an auto-suspending extra-small for BI).

Redshift: roughly $730-820/day, an 8-node RA3 cluster running continuously plus managed storage.

The pattern that emerges consistently across every current cost study: BigQuery is dramatically cheaper for spiky, read-heavy, ad-hoc-analyst-style workloads specifically because you're not paying for idle compute at all. At 10TB scale, one 2026 TCO study puts BigQuery at roughly $29K over 3 years versus $63K for Redshift and $124K for Snowflake — a genuinely large gap that matters enormously for a smaller team. That gap narrows sharply at larger scale — at 1PB, the compute cost difference between all three drops to under 10%, because at that scale you're negotiating committed capacity contracts where list-price differences mostly wash out.

Why This Matters Specifically for ML Workloads

Recall the Feast article's offline store and the dbt article's transformation layer — your warehouse choice directly shapes both.

BigQuery ML is the most mature native option — train, predict, and evaluate models directly from SQL, with built-in gradient-boosted trees, ARIMA for time series, and tight Vertex AI integration for anything needing to escalate beyond what SQL comfortably expresses.

Snowflake Cortex brings native LLM functions and embedded vector search directly into SQL — genuinely useful specifically for SQL-first analytics teams bolting on AI features without standing up separate infrastructure, and this connects directly to the RAG arc earlier in this series if your vector store needs to live alongside your structured data.

Redshift ML "punts to SageMaker" — the integration works, but genuinely involves more moving parts than the other two's more self-contained approaches. If your team is already deep in AWS's ML ecosystem, this is less of a downside; if not, it's real added complexity.

A steady-state SQL analytics workload genuinely favors Snowflake's architecture; an ML-heavy pipeline with genuinely custom processing favors Databricks — worth naming honestly even though this article's title doesn't include it, since several current comparisons treat it as the fourth real contender specifically for ML-forward teams, given its Spark-plus-Delta-Lake-plus-Unity-Catalog stack.

The Line Item Every Comparison Undersells: Egress and Lock-In

This is genuinely the part worth reading twice before committing to any platform. Moving data out of Snowflake — to a BI tool, an ML training cluster, or a partner system — typically runs $90 to over $150 per terabyte, a fee that recurs every single time data moves and rarely appears prominently in a sales conversation.

Snowpark Python gets embedded into ML pipelines at a level that makes it genuinely costly to rip out later — recall the DVC and dbt articles' emphasis on portability; Snowpark-heavy pipelines trade some of that portability for Snowflake-native convenience.

BigQuery's GoogleSQL dialect diverges from ANSI SQL in array handling, struct syntax, and date functions in ways requiring genuine rewrite work on migration, not simple find-and-replace — a real, underestimated exit cost.

Redshift's PostgreSQL heritage makes it the least sticky of the three — SQL dialects port more cleanly elsewhere, and the surrounding tooling (dbt, Airflow, Glue — genuinely the exact tools covered earlier in this series) is largely platform-agnostic by design.

A real dollar figure worth internalizing: migrating a 50TB warehouse has been benchmarked at $80K-$250K in engineering time — covering pipeline rewrites, DAG retesting (recall the Airflow article), BI reconfiguration, and user retraining. Don't pick a warehouse assuming you'll cheaply switch later if you're wrong.

Market Position, for What It's Worth

Snowflake holds roughly 21% of the data warehouse market as of mid-2026, ahead of BigQuery (14%) and Redshift (13%) — genuinely useful context for hiring and ecosystem maturity, though market share alone shouldn't drive your technical decision.

The Actual Decision Framework

Every serious 2026 comparison converges on roughly the same practical sequence, worth following in order rather than starting from a feature checklist.

What's your existing cloud commitment? This mirrors exactly the mini PC and MLOps platform articles' first question. AWS-primary shops should default to Redshift or Snowflake-on-AWS; GCP-primary shops should default to BigQuery; multi-cloud shops genuinely benefit from Snowflake's cross-cloud consistency.

What's your actual query pattern — steady-state or spiky? BigQuery's pay-per-scan model wins decisively for bursty, ad-hoc, analyst-driven workloads. Snowflake and Redshift's time-based billing suits steady, predictable, always-on workloads better, since you're not paying a scan tax on every single query regardless of how routine it is.

Does your workload lean SQL-analytics or ML-pipeline-heavy? Recall the "steady-state SQL favors Snowflake, ML-heavy pipeline processing favors Databricks" split from current migration case studies — genuinely worth weighing honestly rather than assuming your existing warehouse choice automatically extends to your ML workload too.

What's your actual migration risk tolerance? Given $80K-$250K migration costs at even moderate scale, and Snowpark/GoogleSQL lock-in effects that take months to properly audit, this is genuinely not a decision to revisit casually every year.

Quick Comparison Table

FactorSnowflakeBigQueryRedshift
Pricing modelCredits (compute) + storagePer-byte-scanned or slotsPer-hour node/RPU + storage
Best forSteady-state BI, multi-cloud, predictable concurrencySpiky/ad-hoc analyst workloads, GCP-nativeAWS-locked shops, zero-ETL from Aurora
Native MLCortex (LLM + vector search in SQL)BigQuery ML (broadest, native)Punts to SageMaker
3-yr TCO at 10TB (est.)~$124K~$29K~$63K
Egress/exit costHigh ($90-150+/TB, Snowpark lock-in)Moderate (SQL dialect rewrite)Lowest (Postgres-compatible SQL)
Cloud lock-inMulti-cloud capableGCP-onlyAWS-only

Common Mistakes People Make

Comparing list prices across fundamentally different billing units. $/TB-scanned, $/credit, and $/node-hour don't measure the same thing — model your actual workload's cost under each, not the headline rate.

Underweighting egress and dialect lock-in costs. These are frequently larger than the compute rate differences at any meaningful scale — recall the $80K-$250K migration figure before assuming a switch is easy later.

Assuming the platform that won a comparison at 10TB stays the winner at 1PB. The gap between all three genuinely narrows to under 10% at petabyte scale — the "cheapest at small scale" answer isn't durable as you grow.

Ignoring human inattention as the real cost driver. Across every source, the recurring theme is the same: warehouses left running, queries scanning entire tables unnecessarily, data stored hot when it should be archived — this dwarfs the platform-choice cost difference in practice.

Picking by familiarity rather than fit. One current estimate puts the cost of choosing based on what your team already knows, rather than actual workload shape, at 30-80% higher spend than the better-fit option.

  • Designing Data-Intensive Applications by Martin Kleppmann — the foundational text on data systems that directly informs warehouse architecture decisions, covering storage engines, query processing, and consistency models.
  • Fundamentals of Data Engineering by Joe Reis & Matt Housley — covers cloud data platform selection, cost modeling, and the practical tradeoffs between managed services that directly map to this comparison.
  • The Data Warehouse Toolkit by Ralph Kimball — the foundational text on dimensional modeling that directly informs how you structure feature tables and ML-ready datasets in any of these platforms.
  • Cloud Data Engineering — covers the practical realities of building and optimizing data pipelines on Snowflake, BigQuery, and Redshift, including cost optimization patterns that matter more than list-price comparisons.

Wrapping This Up

There's genuinely no universal winner here — BigQuery wins decisively on cost for spiky, ad-hoc, GCP-native workloads; Snowflake wins on predictability and multi-cloud flexibility for steady-state BI; Redshift wins specifically for AWS-locked shops needing zero-ETL ingestion from existing AWS operational data. The gap between them is dramatic at small scale and genuinely narrows as you approach petabyte territory, where migration cost and lock-in risk start mattering more than the sticker price ever did.

Remember that egress fees and SQL-dialect lock-in are real, underestimated costs that can exceed the platform's actual compute pricing difference over a few years, and that the single biggest cost lever in any of these platforms is genuinely operational discipline — auto-suspend, scan discipline, cold storage tiering — not which vendor's logo is on the bill. FYI, this genuinely closes the loop on the entire data infrastructure arc running through this series: dbt transforms data sitting in whichever of these three you choose, Feast's offline store often points directly at one of them, and DVC versions the datasets extracted from them — this article is the foundation the rest of that arc has been quietly assuming existed all along :)

Now go actually model your own team's real query pattern — steady-state or spiky, GCP or AWS, SQL-analytics or ML-pipeline-heavy — against the decision framework above before requesting a single sales call. That answer, more than any benchmark in this article, is what should decide your warehouse.

Share this article X Facebook LinkedIn Reddit WhatsApp

Related Articles