Data Warehousing Updated: 2026-02-27

What is Medallion Architecture?

A data design pattern that organizes data into three layers — Bronze (raw), Silver (cleaned), and Gold (business-ready) — to progressively improve data quality in a lakehouse.

From the field

Medallion architecture is the branding Databricks applied to a very old pattern — raw/staging/marts, or landing/cleansed/curated — and happens to be the most useful three-layer default for any lakehouse or warehouse project in 2026. Bronze = raw source data exactly as it arrived (no transforms, only metadata). Silver = cleaned, deduplicated, conformed entity tables with strong types. Gold = business-ready aggregates, dimensional models, and feature tables that power dashboards and ML. The naming is memorable; the pattern is platform-agnostic — you can implement it with dbt in Snowflake, with Spark on Delta, with Airflow + Iceberg, or with homegrown SQL. The value isn't in the medal names; it's in the discipline of not letting raw ingests go directly to dashboards and not letting business logic leak into data-cleaning jobs.

Why it matters (the failure mode it prevents)

Without medallion-style separation, two pathologies emerge. (1) Dashboards read directly from raw source tables, so a vendor's API schema change silently breaks the CEO dashboard. (2) Business logic gets mixed into cleaning logic, so nobody can tell whether "active customer" means one thing in Marketing's definition and another in Sales's. Bronze/Silver/Gold forces a physical and logical boundary: Bronze preserves history (replayable source of truth), Silver standardizes entities (shared semantics across the org), Gold encodes business rules (owned by domain teams). Each layer has a different owner, different SLA, different refresh cadence.

Field story

A retail client had grown their dbt project from 20 to 420 models over 18 months with no layering discipline — models directly on raw CDC tables, joins across 8 sources per model, business metrics defined inconsistently across 6 different models. A tax-code change in the source ERP broke 38 downstream dashboards overnight because no staging layer absorbed the schema drift. We refactored into strict medallion: 120 Bronze (raw CDC snapshots, 1:1 with sources), 180 Silver (deduplicated, conformed entities: customer, product, order, transaction), 120 Gold (department-owned marts with documented metrics). Source schema changes now break only 1-3 Silver models (usually auto-healed by dbt contracts); Gold dashboards are insulated. Time to add a new source dropped from 2 weeks to 3 days. The refactor took 6 months; the ongoing velocity gain was worth 2x that investment.

The Medallion Architecture (also called Multi-Hop Architecture) is the most popular design pattern for organizing data in a Data Lakehouse. Popularized by Databricks, it divides your data pipeline into three distinct quality layers:

The Three Layers

🥉 Bronze Layer (Raw)

The landing zone for raw, unprocessed data:
  • What goes here: Exact copies of source data — JSON payloads, CDC logs, CSV dumps
  • Format: Usually stored as-is, with added metadata (ingestion timestamp, source system)
  • Purpose: Single source of truth; you can always replay from bronze
  • Example: Raw Salesforce API responses, Kafka event streams, database replication logs

🥈 Silver Layer (Cleansed)

Data that has been validated, deduplicated, and conformedData:
  • What happens here: Schema enforcement, null handling, deduplication, type casting
  • Format: Strongly typed, partitioned, stored in columnar format (Parquet/Delta)
  • Purpose: Enterprise-wide "clean" data that is usable across teams
  • Example: A unified customers table combining Salesforce + Stripe + internal DB records

🥇 Gold Layer (Business-Ready)

Aggregated, enriched data tailored for specific business use cases:
  • What goes here: Business metrics, KPI tables, feature stores, ML training sets
  • Format: Star/snowflake schemas optimized for BI tools
  • Purpose: Powers dashboards, reports, and ML models directly
  • Example: daily_revenue_by_region, customer_lifetime_value, churn_predictions

Why It Works

Source Systems → [Bronze] → [Silver] → [Gold] → BI / ML
                   Raw        Clean      Aggregated
                   Append     Validated   Business Logic
                   Replay     Conformed   Star Schema

Key Benefits

  • Incremental Processing: Each layer only processes what changed
  • Debuggability: When something breaks, trace it back through the layers
  • Reusability: Silver layer serves multiple Gold-layer consumers
  • Governance: Apply access controls at the appropriate layer

Medallion Architecture Tools

LayerCommon Tools
BronzeFivetran, Airbyte, Kafka Connect, AWS Glue
Silverdbt, Spark, Snowflake Tasks, Dataform
Golddbt, Looker, Power BI, Tableau

Anti-Patterns to Avoid

  1. Skipping Silver: Going directly from Bronze to Gold creates fragile pipelines
  2. Too Many Layers: Some teams add Platinum, Diamond — keep it simple
  3. No Schema Enforcement: Silver should enforce schemas strictly
  4. Ignoring Bronze Retention: Bronze is your backup; don't delete it too aggressively

Key Points

Gotchas

Medallion architecture pitfalls that undercut its value:

  • Bronze as a dumping ground. Bronze should be exact copies of source data with only added metadata (ingest timestamp, source system). Any transformation in Bronze defeats the purpose — you lose the ability to replay from source. Enforce "no transforms in Bronze" via code review.
  • Silver doing double duty as Gold. Teams putting business-specific aggregates in Silver creates conflicts — different departments need different metrics. Silver is entity-level and org-wide; Gold is use-case and department-specific.
  • Over-layering every table. Not every table needs all three layers — reference data (country codes, timezone lookups) can live directly in Silver or even Gold. Dogmatic three-layer rules for every table waste pipeline cost.
  • Under-layering business logic. Business metrics defined in multiple Gold models drift over time — "active customer" means 3 different things. Use a semantic layer (dbt semantic layer, Cube, AtScale) or single-source Gold metric tables to enforce consistency.
  • Ignoring the cost of Silver cleaning. Cleansing operations (deduplication, type casting, null handling) on terabytes of data are expensive. Cluster/partition Silver tables by natural keys and only re-process changed partitions.
  • Cascading reprocessing storms. A schema change in Bronze triggers full reruns of Silver and Gold — with no incremental strategy, this is a 4-hour pipeline burn. Use incremental materializations and upstream change detection (dbt state-aware, Dagster asset staleness).
  • No SLA per layer. Bronze, Silver, Gold have fundamentally different freshness needs. Bronze may be hourly, Silver nightly, Gold weekly — or Bronze real-time, Silver 15-minute micro-batches, Gold hourly. Decide SLA per domain, document it, and monitor it.
  • Medallion ≠ data mesh. Medallion is about vertical data quality layers; data mesh is about horizontal domain ownership. You can combine them (each domain has its own Bronze/Silver/Gold), but they solve different problems. Don't use "we have medallion" as a substitute for domain ownership.
  • Confusing Bronze with staging (dbt) or landing (ADF). Dbt's "staging" layer typically does light cleaning (renaming, casting) — that's closer to a thin Silver than Bronze. Decide your mapping explicitly: raw → staging → intermediate → marts, or Bronze → Silver → Gold. Pick one vocabulary per project.
  • Gold tables without documentation. Gold is where business people land. An undocumented Gold table with columns named m1, m2, pct_chg destroys trust. Every Gold model should have a description, tests, and owner — enforce via CI.

Frequently Asked Questions

What is the Medallion Architecture?

The Medallion Architecture is a three-layer data design pattern for lakehouses and warehouses that organizes data by quality/purpose: Bronze (raw ingested data, as-is from source), Silver (cleaned, deduplicated, conformed entities), and Gold (business-ready aggregates, dimensional models, ML features). Popularized by Databricks around 2020, the pattern is platform-agnostic — it maps to dbt's staging/intermediate/marts, to Kimball's staging area/integration layer/presentation layer, and to Azure's landing/standardized/curated zones. The value isn't in the medal branding; it's in enforcing layered responsibility: raw preservation (Bronze), shared entity semantics (Silver), and department-specific business logic (Gold). Most modern lakehouses (Databricks, Snowflake with dbt, Iceberg with Spark) adopt some variant of this pattern by default.

What is the difference between Bronze, Silver, and Gold layers?

Bronze (raw): exact copies of source data, only with added ingestion metadata (source system, load timestamp, checksum). Append-mostly, schema-on-read often, used for replay/reprocessing. Silver (cleaned): deduplicated, type-cast, null-handled, conformed across sources. Schema-enforced, strongly typed, partitioned for query performance. Represents shared business entities (customer, order, product) used across the org. Gold (business-ready): aggregated, enriched, dimensionally modeled. Use-case-specific — marketing mart, finance mart, ML feature store. Optimized for consumer queries (BI tools, dashboards, ML training). Key rule: data flows Bronze → Silver → Gold, never backward; transformations at each layer are clearly scoped (Bronze = none, Silver = entity cleaning, Gold = business logic).

Is Medallion Architecture only for Databricks?

No — the pattern predates Databricks and works on any stack. Databricks coined the "Medallion" name and markets it heavily because Delta Lake benefits from the layered approach, but the actual pattern is platform-neutral. Snowflake + dbt shops typically use raw → staging → intermediate → marts (same pattern, different names). Azure deployments use landing/standardized/curated zones. BigQuery + dbt uses the same dbt layering. Self-hosted Spark + Iceberg uses raw → cleaned → curated. The medallion vocabulary is most common in lakehouse / Spark contexts. In warehouse-centric contexts (Snowflake, BigQuery, Redshift), you'll more often hear "staging/marts" or "raw/refined/mart." They're all the same idea — pick the vocabulary that fits your team's existing tools.

Can I use Medallion Architecture with Snowflake?

Yes, and it's arguably the default for well-structured Snowflake + dbt projects. Typical implementation: separate databases (RAW, ANALYTICS) or schemas (raw.source_name, staging, intermediate, marts). Raw = Bronze (Fivetran/Airbyte/Snowpipe writes directly here, no dbt touches it). Staging in dbt = thin Bronze-to-Silver adapter (rename columns, cast types, add metadata). Intermediate in dbt = Silver proper (entity tables joining multiple sources, deduplication, SCD Type 2). Marts in dbt = Gold (department-owned aggregates, dimensional models). Use Snowflake zero-copy cloning to create dev copies of any layer instantly. Use dbt contracts to pin Silver schemas so Gold doesn't break on upstream changes. Snowflake + dbt + medallion is the most common modern warehouse stack for good reason — it just works.

How do I decide what goes in Silver vs Gold?

The test: is this transformation useful across teams, or is it specific to one use case? Silver answers "what is a customer" — an entity definition shared across marketing, sales, support, finance. If Marketing and Sales disagree on the definition, that's a Silver-level modeling discussion. Gold answers "what is a marketing-qualified customer in Q4 for the APAC campaign" — narrow, use-case-driven, owned by one team. Silver tables rarely have business metrics; Gold tables are mostly business metrics. Silver is typically normalized to 3NF-ish or lightly-denormalized entity form; Gold is heavily denormalized star/snowflake schema optimized for BI. Silver tables are long-lived (years); Gold tables come and go with campaigns and initiatives. If multiple Gold marts need the same cleaning logic, promote that logic to Silver.

How does medallion architecture handle streaming data?

Each layer can run on its own cadence. Bronze: Kafka/Kinesis topics landing into Iceberg/Delta tables via streaming writers (Flink, Spark Structured Streaming, Snowpipe Streaming) — typically seconds-to-minutes latency. Silver: micro-batch or streaming joins and dedup — cleaning per-record is hard in pure streaming (stateful joins blow up memory), so many teams run Silver as 1-15 minute micro-batches. Gold: hourly or daily aggregates triggered when Silver freshness advances — typically scheduled, not streaming. A common hybrid: streaming Bronze, micro-batch Silver, batch Gold — each layer optimized for its consumer's latency needs. Tools: Apache Flink + Iceberg for streaming Silver; Databricks DLT for streaming medallion; Snowflake Dynamic Tables for layered refresh cascades; dbt + Airflow/Dagster for batch medallion.

What is the difference between medallion architecture and data mesh?

They solve orthogonal problems and can coexist. Medallion: vertical layering by data quality/purpose (Bronze/Silver/Gold) — about how raw data is progressively refined into business-ready tables. Data mesh: horizontal ownership by domain (sales domain, finance domain, product domain) — about who owns each dataset, treating data as a product with consumers, SLAs, and documentation. In a combined setup, each domain runs its own medallion stack: sales owns sales-Bronze/Silver/Gold, finance owns finance-Bronze/Silver/Gold. Shared entities (customer, product) are governed by a central team or a federated contract. Medallion without mesh gives you clean layering but centralized ownership bottlenecks. Mesh without medallion gives you distributed ownership but inconsistent quality. Most mature platforms use both — domain-owned medallion pipelines with a shared catalog for governance.

Related Terms

Data WarehouseLakehouse ArchitectureETL (Extract, Transform, Load)Data Modelingdbt (Data Build Tool)

Related Tools

DatabricksdbtSnowflakeApache IcebergDelta Lake

Learn More

Related Articles

Browse All Terms Read Articles