All notes
Data Architecture18 minSeptember 18, 2026

Every Data Platform Maps to Every Other One: Databricks, Snowflake, dbt, and the Big Three

Ten functional categories, six platforms, one diagram per category showing all six flows on the same spine — plus the renames that quietly dated everything you learned in 2024.

RW

Ryan Watts

Director of Data, Vitable Health

Every data platform conversation I have eventually arrives at the same question, phrased six different ways: "we're on Snowflake, can you do this on Databricks?" or "our client is all-in on Azure, does your experience transfer?" The honest answer is that the vendor surface changes and the engineering decisions do not. But "it all maps" is a useless thing to say out loud unless you can draw the map.

So here is the map. Ten functional categories, six platforms, a diagram per category showing all six flows on the same spine, and a table underneath naming the actual products. I verified every product name against current vendor documentation in September 2026, because this is the most name-unstable corner of infrastructure I work in — roughly a third of what I would have written from memory was renamed, absorbed, or deprecated in the last eighteen months.

How to read this

Each section is built on a four-stage spine. The stages differ by function, but within a section every platform gets the same four stages in the same order, so you can read across lanes and compare like for like. The diagram shows the flow; the table names the products; the analysis afterward covers the part that actually matters — where the approaches genuinely differ rather than merely differ in branding.

Color is consistent across every diagram in this article: Databricks red, Snowflake blue, dbt orange, GCP indigo, AWS amber, Azure cyan.

A note on dbt Cloud before we start. It is in this comparison because people put it in the comparison, but it is not a peer of the other five. dbt is a transformation and orchestration layer that runs on top of a warehouse or lakehouse. For roughly half of these categories the correct answer for dbt is "not in scope, it relies on the host platform," and I say so rather than inventing a product. Where dbt genuinely leads — version-controlled modeling, testing as code, cross-project contracts — it leads clearly.

The ten functions, and how this article is sequenced

A linear spine from ingestion through serving, with quality and governance as cross-cutting concerns that attach to every stage rather than occupying one.

1. Batch and file ingestion

The oldest problem in the stack: files arrive in object storage, and you need them in a queryable table without reprocessing yesterday's files every time. The interesting engineering question is not "how do I read Parquet," it is "how do I know what is new," and that is where the six platforms diverge more than you would expect.

Batch and file ingestion — six platforms on one spine

Stage 2 is the one that matters. Everything else is plumbing; how a platform discovers new files determines its cost and latency floor.

PlatformNew-file discoveryLoad mechanismManaged tableNotable alternative
DatabricksAuto Loader cloudFiles, notification or directory listingStructured Streaming read with checkpointed stateBronze Delta tableLakeflow Connect managed connectors
SnowflakeCloud event notification on an external stageSnowpipe micro-batch, or COPY INTO for bulkNative or Snowflake-managed IcebergOpenflow, managed Apache NiFi
dbt CloudNot in scope — relies on host platformNot in scopeNot in scopeReads sources the host already landed
GCPStorage trigger, or Data Transfer Service scheduleBigQuery batch load jobBigQuery native or Iceberg tableStorage Write API in batch mode
AWSGlue crawler, or EventBridge notificationGlue ETL job, or Amazon Data FirehoseS3 Tables managed Iceberg bucketsZero-ETL for SaaS sources, lands Iceberg directly
AzureData Factory trigger, or OneLake shortcut with no copyCopy job, or Dataflow Gen2OneLake Delta tableShortcuts virtualize instead of ingesting

What actually differs

Auto Loader is not a batch loader wearing a batch loader's clothes — it is a streaming primitive. Under the hood it maintains checkpointed state about which files it has seen, which means file ingestion and stream ingestion share one code path on Databricks. That is a real architectural advantage and it is the thing I miss most on other platforms: you write the pipeline once and change a trigger setting to move between hourly batch and continuous.

Snowpipe sits in a different place. It is genuinely micro-batch, triggered by cloud events, and Snowflake is explicit that it is complementary to rather than replaced by Snowpipe Streaming — files versus rows are separate paths with separate cost profiles.

The two answers that break the frame entirely are worth calling out. AWS zero-ETL for SaaS sources lands data as Iceberg tables in the SageMaker Lakehouse with no user-authored pipeline at all; there is nothing to write. And OneLake shortcuts do not ingest anything — they virtualize a path in ADLS, S3, or GCS so Fabric queries it in place. When someone asks me to compare ingestion tooling and one candidate's answer is "don't ingest," that is a design conversation, not a feature comparison.

2. Streaming ingestion and event streaming

Two distinct jobs get collapsed into the word "streaming": the durable message bus that accepts events, and the compute engine that processes them in flight. Keeping them separate is the fastest way to see what each platform actually sells you.

Streaming ingestion — bus and compute engine separated

Stage 2 is the durable log; stage 3 is the processing engine. Databricks is the notable lane with no first-party answer at stage 2.

PlatformDurable message busStream computeServing tableNotable alternative
DatabricksNone first-party — bring Kafka, Kinesis, Pub/Sub, or Event HubsStructured Streaming on Spark; Spark Real-Time Mode for sub-secondStreaming Delta tableAuto Loader for file-arrival streams
SnowflakeSnowflake Datastream, managed Kafka, private previewSnowpipe Streaming for row ingestion; Dynamic Tables for SQL-native processingNative or managed Iceberg v2/v3Kafka connector into Snowpipe Streaming
dbt CloudNot in scope — relies on host platformNot in scopeMicro-batch incremental modelsFrequent incremental runs approximate streaming
GCPPub/SubDataflow on Apache Beam; BigQuery continuous queries in SQLBigQuery streaming tableStorage Write API direct
AWSKinesis Data Streams, or Amazon MSK for KafkaManaged Service for Apache FlinkIceberg table, or RedshiftAmazon Data Firehose for delivery without processing
AzureEvent Hubs, Kafka-compatible; or Fabric EventstreamReal-Time Intelligence with KQLEventhouse, or OneLakeStream Analytics, but Microsoft steers new work to Fabric

What actually differs

Databricks has no managed message bus. That is not a criticism — it is a deliberate scope boundary, and it means every serious Databricks streaming architecture has a Kafka or Kinesis dependency sitting outside the platform. Snowflake just closed that gap with Datastream, its own managed Kafka, which is still in private preview and worth watching because it changes the shape of Snowflake streaming reference architectures.

Careful with that name: Snowflake Datastream is a managed Kafka service, and Google Cloud Datastream is a CDC service. Same word, different category, two vendors. I have watched this cause genuine confusion in architecture reviews.

BigQuery continuous queries are the most genuinely novel thing in this section. It is plain SQL running continuously inside the warehouse, no separate stream-processing cluster to size or babysit, with output to BigQuery, Pub/Sub, Bigtable, or Spanner. Stateful joins and windows are still in preview, so it does not replace Flink for complex event processing, but for enrichment-and-route workloads it removes an entire tier from the diagram.

Two deprecations to keep off your slides. Kinesis Data Analytics for SQL reached end of life in January 2026, so Flink is the AWS answer now. And Azure is mid-pivot: Stream Analytics still runs, but Microsoft's documentation steers new workloads to Fabric Eventstream, and the Power BI output connector retires in October 2027. I would not start a new Stream Analytics project today.

3. Change data capture

This is the category where I see the most expensive mistakes, because CDC looks like a connector-selection problem and is actually a correctness problem. Reading a write-ahead log is the easy part. Landing an ordered change stream and collapsing it into a correct current-state table without losing late or out-of-order events is the part that takes the engineering.

Change data capture — three genuinely different philosophies

Read stage 2 across lanes. Log-based replication, extension-based decoding, and share-based zero-ETL are not the same architecture wearing different names.

PlatformChange captureRaw landingMerged current stateNotable alternative
DatabricksLakeflow Connect managed database connectors, log-basedBronze Delta, append-onlyAUTO CDC into SCD type 1 or 2Debezium or Fivetran into Kafka or Auto Loader
SnowflakeOpenflow CDC connectors; Snowflake Postgres mirroring via logical replicationIceberg change log, exposed as $changes and $live viewsMERGE, or a Dynamic Table over the change feedSnowpipe Streaming for Kafka-delivered CDC
dbt CloudNot in scope — relies on host platformNot in scopedbt snapshots build SCD 2 from landed dataOnly diffs data that already arrived
GCPDatastream, log-based, broad source coverageBigQuery append-only staging, or GCSMERGE in Dataform or scheduled SQLCustom Dataflow CDC pipeline
AWSDMS for broad and proprietary sources; zero-ETL for intra-AWSIceberg staging, or a maintained replicaMERGE in Glue, or nothing if zero-ETLDebezium on MSK for unsupported sources
AzureFabric Mirroring, managed near-real-time replicaOneLake Delta mirrored tableQuery the replica directlyMirrored Database Change Feed into Eventstream

What actually differs

There are three distinct philosophies hiding in that table, and choosing between them is the actual architecture decision.

Log-based replication services — Datastream, DMS, Lakeflow Connect — read the database's write-ahead log and hand you an ordered change stream. You own the merge. This gives you the most control and the most work: you decide SCD strategy, late-arrival handling, and deletion semantics.

Extension-based decoding is Snowflake's newer and more interesting answer. Snowflake Postgres, from the Crunchy Data acquisition, uses a Postgres publication and a logical decoding slot, with pg_lake writing the change log out as open Iceberg tables. The change feed itself is queryable through $changes, and $live gives you a roughly thirty-second-latency current view. The change log being an open table rather than a proprietary internal structure is a meaningful difference.

Share-based zero-ETL — AWS zero-ETL integrations and Fabric Mirroring — removes the pipeline entirely. Data appears as managed tables, maintained by the vendor, and there is no merge step because you are querying a replica. Cheapest to operate, least control. When your source is Aurora and your target is Redshift, writing a CDC pipeline in 2026 is doing unpaid work.

Two corrections for anyone carrying a 2024 mental model. Snowflake Streams are not a source-CDC tool; they track changes on tables already inside Snowflake, and calling them "Snowflake's CDC answer" conflates two very different things. And DMS is not deprecated — only DMS Fleet Advisor was retired, in May 2026. AWS's own guidance splits the use case deliberately: DMS for migrations and external or proprietary sources, zero-ETL for continuous intra-AWS replication.

The outlier worth noting: Fabric Mirroring is the only one of these that mirrors from competitors, pulling Snowflake and BigQuery tables into OneLake. That is a competitive strategy expressed as a product feature.

4. Transformation and modeling

The whole industry converged on the same idea here, from different directions, and mostly stopped arguing about it: you declare the table that should exist and how fresh it should be, and the platform figures out when to run what.

Transformation and modeling — the declarative convergence

Stage 2 is where the philosophies split: declare desired state and freshness, or author an explicit dependency graph.

PlatformModel definitionExecution engineCurated outputNotable alternative
DatabricksLakeflow pipelines, formerly Delta Live TablesSpark Declarative Pipelines, Spark 4.1Silver and gold Delta tablesNotebooks driven by Lakeflow Jobs; dbt on Databricks
SnowflakeDynamic Tables, driven by a freshness targetVirtual warehouse, auto-selects incremental or full refreshCurated native tablesSnowpark DataFrames; Streams and Tasks for imperative
dbt CloudSQL and Python models with an explicit ref() DAGdbt v2 engine, state-aware runsMarts with contracts and model versionsdbt Canvas for low-code modeling
GCPDataform SQLXBigQuery pipelines, in-warehouseCurated BigQuery datasetsDataflow for custom; stored procedures
AWSGlue Visual ETL, or Iceberg materialized viewsGlue Spark, EMR, or AthenaCurated Iceberg with automatic query rewritedbt on Redshift or Athena
AzureFabric notebooks, T-SQL, or Dataflow Gen2Fabric Spark or Warehouse engineGold lakehouse or warehousedbt against Fabric Warehouse

What actually differs

Lakeflow pipelines, Dynamic Tables, BigQuery pipelines, and Glue's Iceberg materialized views all ask the same question — what should exist, and how fresh — instead of the older question of when to run what. dbt is the deliberate holdout, and its explicit ref() DAG with state-aware runs remains the best answer when you want transformation logic to live in version control and behave identically across warehouses.

Two implementation details worth knowing. Dynamic Tables decide for themselves whether to refresh incrementally or fully, based on whether your query is incrementalizable — which is convenient until a query change silently flips you to full refresh and your credit burn triples. And Glue's Iceberg materialized views use Iceberg row-level change tracking for incremental refresh plus automatic query rewrite, meaning the engine silently redirects user queries to the materialized view. That is a genuinely different model from every other option here.

On naming: Delta Live Tables is now Lakeflow pipelines, and import dlt became from pyspark import pipelines as dp, though no migration is required. On the dbt side, the Fusion engine is now just called dbt at version 2, and what was dbt Core is now dbt OSS under Apache 2.0. Two distributions on a shared foundation, with Mesh and Catalog gated to the commercial binary.

5. Orchestration and scheduling

The clean split in this category is philosophical: two vendors sell you managed open-source Airflow, two sell you a proprietary task DAG and expect you to bring Airflow anyway for anything cross-system.

Orchestration and scheduling — managed Airflow versus proprietary task graphs

Stage 3 determines your portability. A proprietary task graph is faster to adopt and harder to leave.

PlatformSchedulerTask graphRun historyNotable alternative
DatabricksLakeflow Jobs, formerly Databricks Workflows, serverlessTask DAG with if-else and for-each control flowSystem tables plus job runs UIExternal Airflow triggering Jobs via REST API
SnowflakeTask scheduler, cron or stream-has-dataTask graph of SQL and stored procedures, warehouse-scopedTask history viewsOpenflow DAG view for ingestion flows
dbt Clouddbt Orchestrator — dbt jobs and CI onlyModel DAG inside the dbt projectRun history plus metadata APINot a general-purpose orchestrator
GCPManaged Service for Apache Airflow, formerly Cloud ComposerAirflow DAG, any operatorAirflow UI plus Cloud LoggingBigQuery pipelines have built-in scheduling
AWSAmazon MWAA, or Step Functions for service orchestrationAirflow DAG, or state machineAirflow UI plus CloudWatchGlue workflows and triggers
AzureFabric Data Factory pipelinesActivity graph, or Fabric Airflow jobFabric monitoring hubAzure Data Factory classic, still separate from Fabric

What actually differs

Snowflake Tasks are warehouse-scoped. They run SQL and stored procedures inside Snowflake, and the moment your pipeline needs to call an external API, kick off a container, or coordinate with a system outside the warehouse, you need Airflow, Dagster, or Prefect. The same is broadly true of Lakeflow Jobs, though Jobs has stretched further — you can now create Lakeflow Connect ingestion pipelines directly in the Jobs UI, which quietly dissolves the boundary between orchestrator and ingestion tool.

dbt's scheduler, now branded Orchestrator, is frequently mistaken for a general-purpose orchestrator. It is not, and trying to make it one is a well-trodden path to regret. It schedules dbt work and runs CI.

One date worth flagging if you are on Google Cloud: Cloud Composer is now Managed Service for Apache Airflow, and Managed Airflow Gen 1 environments plus Airflow 2.0.x reached end of life on September 15, 2026. If you have not migrated, that is already behind you.

6. Storage and table format

This is the category that changed most since 2024, and the one where the industry's direction is now unmistakable. Catalog and format have become inseparable, and Iceberg REST is the interface everybody agreed to speak.

Storage and table format — the Iceberg REST convergence

Stage 3 is the story of 2026. Four different vendors' metastores now expose the same Iceberg REST catalog interface.

PlatformTable formatMetastore and catalogLayout optimizationNotable alternative
DatabricksDelta Lake, with UniForm for Iceberg and Hudi read compatibilityUnity Catalog, three-level namespaceLiquid Clustering plus predictive optimizationExternal Iceberg via UniForm
SnowflakeNative micro-partitions, or Iceberg tablesHorizon Catalog, built on Apache PolarisAutomatic clustering plus search optimizationSnowflake Open Catalog for externally managed Iceberg
dbt CloudNot in scope — materializations map to host table typesdbt Catalog syncs outward to the host catalogHost platform optimizes—
GCPBigQuery columnar, or Iceberg on GCS under Google Cloud LakehouseLakehouse metastore, Iceberg REST, GA with credential vendingPartitioning, clustering, automatic reclusteringBigLake, the former name, still appears in older docs
AWSApache Iceberg as the platform defaultGlue Data Catalog plus Lake Formation permissionsS3 Tables automatic compaction; Glue optimizersPlain S3 and Parquet with a Glue crawler
AzureDelta-Parquet, native across lakehouse, warehouse, and mirroringOneLake catalog plus Microsoft PurviewV-Order plus automatic compactionIceberg interop via table-format virtualization

What actually differs

The format alignment now sorts cleanly. Databricks and Fabric both standardized on Delta Lake. AWS went all-in on Iceberg — S3 Tables, Glue materialized views, and zero-ETL all land Iceberg, making it the default rather than an option. Snowflake straddles proprietary micro-partitions and first-class Iceberg. GCP straddles BigQuery-native and Iceberg via what is now called Google Cloud Lakehouse.

Liquid Clustering deserves more attention than it gets, because it is a genuine divergence rather than a rebrand. Databricks' position is that you should stop thinking about partition columns at all — no Hive-style partitioning, no ZORDER, just declare clustering keys and let the platform manage file layout. BigQuery and Snowflake still expose partition and cluster concepts as things you reason about. Having tuned partition strategies by hand for years, I find the Databricks position correct and slightly uncomfortable, in that order.

The naming churn here is severe. BigLake is now Google Cloud Lakehouse and the BigLake metastore is the Lakehouse metastore. If you are reading a tutorial that says BigLake, it is not wrong, just old.

7. Data quality, testing, and observability

There are exactly two philosophies in this category, most mature organizations run one of each, and knowing which one you are looking at tells you where bad data will end up.

Data quality — assertion-at-write versus scan-after-land

Stage 3 is the fork. Enforce at write time and bad rows never land; scan after landing and you detect rather than prevent.

PlatformRule definitionEnforcement pointObservability surfacePhilosophy
DatabricksLakeflow pipeline expectations, formerly DLT expectationsWarn, drop, or fail the pipeline at write timeLakehouse Monitoring plus pipeline event logsAssert at write
SnowflakeData metric functionsScheduled measurement after landingHorizon Catalog quality monitoring plus Snowflake TrailScan after land
dbt CloudTests, unit tests, and v2 checks, all in version controlFail the run and block the mergedbt Insights plus source freshnessAssert in CI
GCPKnowledge Catalog DataScan rules, formerly DataplexScheduled scan after landingCatalog quality tab plus BigQuery data insightsScan after land
AWSGlue Data Quality DQDL rulesDeequ evaluation inside the Glue jobCloudWatch plus SageMaker CatalogAssert at write
AzureMicrosoft Purview data quality rulesScheduled scan and scoringPurview Unified Catalog plus Fabric monitoring hubScan after land

What actually differs

In-pipeline assertions — Lakeflow expectations, dbt tests, Glue Data Quality, Dataform assertions — evaluate at write time and can fail or quarantine bad rows before they land. Scanner-based monitoring — Knowledge Catalog DataScans, Snowflake data metric functions, Purview — measures quality on data that has already landed. The first prevents; the second detects. Most teams that care about this run both, with assertions on the critical path and scanners for broad coverage.

dbt is the only option here whose quality layer is version-controlled code by default, and that matters more than it sounds: a test that lives in a UI is a test nobody reviews. The v2 checks feature, which runs arbitrary queries against the Parquet-based dbt Information Schema, is new since 2024 and worth a look if your last dbt exposure predates it.

The honest gap: none of these six matches a dedicated observability tool like Monte Carlo or Metaplane for cross-system anomaly detection and incident routing. Every first-party offering is strongest inside its own platform boundary, which is precisely where multi-platform data quality problems are not.

8. Governance, catalog, and lineage

The catalog wars are over and they ended in an unusual place: everybody won the interoperability argument, so the competition moved to governance depth.

Governance and catalog — open APIs, divergent depth

Stage 3 converged on Iceberg REST across four vendors. Stage 4, sharing, is where the strategies still diverge sharply.

PlatformPolicy engineCatalog and lineageExternal sharingNotable addition
DatabricksUnity Catalog grants, row and column securityUnity Catalog, column-level lineageOpenSharing, formerly Delta Sharing, now a Linux Foundation projectUnity AI Gateway governs model, agent, and MCP calls
SnowflakeRBAC plus masking and row access policiesHorizon Catalog on Apache Polaris, Iceberg REST and Scan APIsZero-copy sharing, now extended to Delta and IcebergHorizon Context layer
dbt CloudProject groups and model access modifiersdbt Catalog, formerly dbt Explorer, plus dbt MeshNot in scope — relies on host platformModel contracts and versions
GCPCloud IAM plus policy tags for column ACLsKnowledge Catalog, formerly Dataplex Universal CatalogAnalytics Hub listingsAPI and IAM names unchanged through the rename
AWSLake Formation fine-grained permissionsGlue Data Catalog for technical, SageMaker Catalog for businessCross-account shares plus AWS Data ExchangeIceberg REST endpoint on Glue
AzurePurview policies, DLP, sensitivity labelsPurview Unified Catalog plus in-Fabric OneLake catalogOneLake sharing and cross-tenant shortcutsPurview extends to AI governance

What actually differs

Unity Catalog, Horizon, the Lakehouse metastore, and Glue all expose Iceberg REST catalog endpoints now. Table-level lock-in as a strategy is finished, so the differentiation moved to governance depth: how granular the masking, how complete the column-level lineage, how well it handles AI assets.

On that last point, Databricks has moved furthest past data. Unity AI Gateway governs runtime AI interactions — model calls, agent tool invocations, MCP service access, spend caps — and there is no direct analog on the other five yet. If you are building agentic systems on a governed platform, that gap is going to matter to your security review.

Sharing is where strategies genuinely diverge. Databricks open-sourced and broadened Delta Sharing into OpenSharing under the Linux Foundation, adding AI assets and Iceberg REST interop. Snowflake kept sharing zero-copy and in-platform but extended it to Delta and Iceberg tables. Fabric virtualizes with shortcuts instead of sharing at all. Three different bets about whether data leaves your platform.

One category error to avoid: dbt Catalog and dbt Mesh govern the transformation project — contracts, versions, groups — and sync outward to host catalogs. They are not an enterprise catalog, and positioning them as a Purview or Unity Catalog replacement will not survive contact with a compliance team. Also worth knowing that Google's own documentation is internally inconsistent here, with some pages saying Dataplex Universal Catalog became Knowledge Catalog and others saying Dataplex Catalog became BigQuery universal catalog. You will see both.

9. BI serving and SQL compute

Most of the 2024-era arguments in this category have gone stale. Everyone converged on serverless auto-scaling SQL compute, and the interesting differences moved to the pricing model and the semantic layer.

BI serving and SQL compute — from curated table to consumer

Stage 3, the semantic layer, is where the current competition actually is. Stage 2 has largely converged on serverless.

PlatformSQL computePricing unitSemantic layerConsumer surface
DatabricksDatabricks SQL serverless warehouses, Photon engineDBUsMetric views plus Unity Catalog semanticsAI/BI Dashboards and Genie
SnowflakeVirtual warehouses, multi-cluster, per-second, auto-suspendCreditsSemantic views consumed by Cortex AnalystSnowflake CoWork, formerly Snowflake Intelligence
dbt CloudNot in scope — the host warehouse executesHost platformdbt Semantic Layer, governed metric definitionsAny BI tool over JDBC or GraphQL
GCPBigQuery, slot reservations or on-demandSlots, or bytes scannedLookML semantic modelLooker, Looker Studio, conversational analytics agent
AWSRedshift Serverless or provisioned RA3; Athena for serverless TrinoRPUs, or bytes scannedQuick topics and datasetsAmazon Quick, formerly QuickSight
AzureFabric Data Warehouse, or Lakehouse SQL analytics endpointCapacity unitsDirectLake semantic modelPower BI plus Copilot

What actually differs

DirectLake is the architecturally distinct option. Power BI reads Delta files in OneLake directly into the semantic model — no import step, no scheduled refresh, and for most BI workloads no separate warehouse serving tier at all. If your organization lives in Power BI, that removes a whole class of refresh-window engineering that the other five still require.

BigQuery remains the only pure disaggregated model where you can pay per byte scanned with zero capacity planning. Everyone else sells capacity in some unit — DBUs, credits, capacity units, RPUs. That difference shows up in how teams behave: capacity models create an incentive to consolidate workloads onto a warehouse that is already running, and per-byte models create an incentive to prune columns. Both distort design, in opposite directions.

The stale argument worth retiring: Snowflake's instant elasticity versus Databricks' cluster startup time. Both run serverless auto-scaling SQL compute now, and if that comparison is still in your evaluation deck it is doing no work.

Finally, brace for the renames, because every vendor renamed its conversational BI surface in 2026. Genie on Databricks, CoWork on Snowflake — formerly Snowflake Intelligence, with Cortex Code now called CoCo — conversational analytics on GCP, Amazon Quick where you knew QuickSight, and Copilot in Power BI.

10. ML, features, and model serving

The pattern to watch here is lakehouse-OLTP convergence. Serving features at single-digit-millisecond latency is an operational database problem, and two vendors just went and bought operational databases to solve it.

ML and model serving — offline training to online inference

Stage 4 is the interesting one. Low-latency feature serving pushed two lakehouse vendors into acquiring Postgres companies.

PlatformFeature storeExperiment trackingModel registryOnline serving
DatabricksFeature Store in Unity Catalog; Feature Views in previewMLflow 3Model Registry in Unity CatalogModel Serving backed by Lakebase, managed Postgres, GA February 2026
SnowflakeSnowflake Feature StoreSnowpark training with MLflow 3 trackingSnowflake ML Model RegistryWarehouse CPU, or Snowpark Container Services with GPU and vLLM
dbt CloudFeature tables can be dbt modelsNot in scopeNot in scopeNot in scope
GCPFeature Store on Gemini Enterprise Agent PlatformVertex Experiments and PipelinesModel RegistryOnline endpoints, or BigQuery ML in-warehouse
AWSSageMaker AI Feature Store, online and offline groupsSageMaker training with managed MLflowSageMaker AI Model RegistrySageMaker endpoints; Bedrock for foundation models
AzureAzure ML feature store; Fabric has none first-partyAzure ML SDK v2, plus Fabric Data ScienceAzure ML model registryManaged endpoints; AI Foundry for generative AI

What actually differs

Databricks' answer to online feature serving is now a managed Postgres. Lakebase, from the Neon acquisition, went GA in February 2026 with serverless Postgres 16 and 17, scale-to-zero, and database branching, and it backs Online Feature Stores — Model Serving looks features up automatically at inference time. Snowflake's parallel move is Snowflake Postgres from the Crunchy Data acquisition. Two lakehouse vendors independently concluded that the way to serve features fast is to own an OLTP engine, which tells you something about where this architecture is heading.

Snowflake quietly deprecated its own modeling library. snowflake.ml.modeling now emits a deprecation warning; the guidance is to train with native scikit-learn, XGBoost, or LightGBM and log to the Model Registry. Its differentiation is deployment target choice — warehouse CPU versus container GPU with vLLM — not training frameworks.

GCP has the deepest rename of anything in this article, and it is a genuine trap. Vertex AI's ML sub-services now document under the Gemini Enterprise Agent Platform, and the legacy Vertex AI Feature Store's optimized online serving is deprecated. Anyone citing "Vertex AI Feature Store" in 2026 is citing a deprecated product.

On AWS, "SageMaker" alone is now ambiguous and you should stop using it unqualified. There are three: SageMaker AI for classic ML, SageMaker Unified Studio for the data and AI development environment, and SageMaker Lakehouse for Iceberg storage unification. And on Databricks, treat Mosaic AI as legacy-but-still-referenced branding — 2026 platform materials list components by name rather than under that umbrella.

The rename cheat sheet

I keep coming back to this table more than any other part of this article. If you learned this stack in 2024, this is your delta.

What you called it in 2024What it is called nowVendor
Delta Live Tables, DLTLakeflow pipelinesDatabricks
Databricks WorkflowsLakeflow JobsDatabricks
Ingestion had no umbrella nameLakeflow ConnectDatabricks
Delta SharingOpenSharing, a Linux Foundation projectDatabricks
—Lakebase, managed serverless Postgres, GA February 2026Databricks
—Unity AI GatewayDatabricks
Snowflake IntelligenceSnowflake CoWorkSnowflake
Cortex CodeSnowflake CoCoSnowflake
—Snowflake Datastream, managed Kafka, private previewSnowflake
—Snowflake Postgres, via the Crunchy Data acquisitionSnowflake
dbt Fusion enginedbt, version 2dbt
dbt Coredbt OSS, Apache 2.0dbt
dbt Explorerdbt Catalogdbt
dbt Visual Editordbt Canvasdbt
dbt Cloud IDEdbt Studiodbt
Dataplex Universal CatalogKnowledge CatalogGCP
BigLake, BigLake metastoreGoogle Cloud Lakehouse, Lakehouse metastoreGCP
Cloud ComposerManaged Service for Apache AirflowGCP
Vertex AI ML surfacesGemini Enterprise Agent PlatformGCP
Kinesis Data FirehoseAmazon Data FirehoseAWS
Kinesis Data Analytics for SQLEnded January 2026 — use Managed Service for Apache FlinkAWS
SageMaker, as an umbrellaSageMaker AI, Unified Studio, and LakehouseAWS
QuickSightAmazon QuickAWS
Azure Synapse Data ExplorerRetired October 2025 — use Fabric EventhouseAzure
Azure Stream AnalyticsWinding down — Fabric Eventstream is the pathAzure
Azure Synapse AnalyticsSupported, maintenance mode; Fabric is the stated pathAzure

How I actually use this

The reason I build maps like this is not to win comparison arguments. It is that the map tells you which decisions are portable and which are not.

Look back across the ten sections and notice where the diagrams are nearly identical lane to lane: orchestration, transformation, batch ingestion, BI serving. In those categories the engineering is genuinely transferable, the vendor choice is mostly a cost and ergonomics question, and someone who has built it well on one platform will build it well on another inside a month.

Then notice where the lanes diverge structurally rather than cosmetically. CDC, where three incompatible philosophies produce three different correctness models. Storage layout, where Liquid Clustering and explicit partitioning ask you to think differently. Online feature serving, where the answer is now an OLTP database. Sharing, where the strategies encode genuinely different bets about whether your data leaves the platform. Those are the places where platform choice constrains architecture, and those are the places worth spending your evaluation time.

Everything else on that list is a rename waiting to happen.

RW

Ryan Watts

Seventeen years of warehouse and cloud work, then Head of AI at DVx, then founding Director of Data at Vitable. I still write the dbt and Terraform myself, and I still take the IC ticket when a team is blocked.