skip to content

What belongs in the bronze, silver and gold layers of a medallion architecture?

level: juniorimportance: must knowfreq 78%

answer

  1. Three tiers, three different promises
  2. One of them is deliberately dirty
  3. Cleaning happens once, not per report
  4. Fidelity, correctness, business semantics
  5. Staging, intermediate, marts is the same idea

basics

~20 s

Bronze holds source data landed as received, duplicates and quirks included. Silver holds cleaned, typed, deduplicated and conformed entities at a declared grain. Gold holds business-ready output — dimensional models, aggregates and metric tables that reporting queries directly.

solid answer

~40 s

Medallion layering splits an analytics platform into three tiers with different guarantees. **Bronze** is the landing zone: source records written as received — original field names, duplicates, bad rows and all — plus ingestion metadata such as load timestamp and source file. **Silver** is where data becomes trustworthy: types enforced, records deduplicated to a declared grain, business keys resolved, code lists and currencies conformed across sources, quality checks applied. **Gold** is consumption-shaped output: facts and dimensions, aggregates and metric tables that BI tools and analysts read. The shorthand is fidelity in bronze, correctness in silver, business semantics in gold. The same pattern shows up under other names — staging, intermediate, marts — and three is a convention, not a law. What matters is that each layer adds a guarantee somebody is accountable for.

code

text · 3 lines
text
bronze_orders_raw     one row per received message, payload as-is + ingested_at
silver_orders         one row per order_id, typed, deduplicated, keys conformed
gold_fct_daily_sales  one row per order_date x product_key x store_key

go deeper

for a junior

Be ready to name the three layers and say in one sentence what each holds. The point to land is that bronze is deliberately unmodified, and that cleaning happens once in silver rather than in each report.

for a middle

Explain what guarantee each boundary adds and where a given transformation belongs — deduplication, key resolution, currency conversion, aggregation. Be able to say why report-specific filters do not belong in a shared silver table.

for a senior

Show you use the layers to isolate blame during an incident: source error, cleaning error, or metric-definition error. Be ready to justify skipping a layer for a simple source and adding one for a messy domain.

for a principal

Own the argument that layers are contract boundaries between owners, not a mandated pipeline shape. Talk about the cost of each extra copy in storage, freshness and cognitive load versus the coupling it removes.

## What medallion layering is Medallion architecture is a naming convention for the stages data passes through inside an analytics platform, popularised by Databricks as bronze / silver / gold. It is not a technology and not a file layout: it is an agreement about **what a consumer is allowed to assume** about a table depending on which layer it sits in. Every mature warehouse or lakehouse has some version of it, because the alternative — every consumer cleaning raw data their own way — produces as many versions of "revenue" as there are analysts. ## Bronze: fidelity Bronze is the landing zone. Data arrives here as close to the source's own shape as the ingestion tool allows: original column names, original types (often everything as strings or a single JSON payload column), duplicates from retries, rows that will later fail validation, and columns nobody has a use for yet. The one thing you *add* is ingestion metadata — a load timestamp, a batch or file identifier, sometimes the source row number — so you can trace any downstream row back to the delivery that produced it. What bronze guarantees is **fidelity**: this is what the source sent us, at this time. It guarantees nothing about correctness, uniqueness or types. Business logic does not belong here. Filtering out "bad" rows here is the classic mistake, because you have thrown away the evidence you would need to prove the source was wrong. ## Silver: correctness and conformance Silver is where raw becomes usable. Typical work: cast strings to real types; deduplicate to a declared grain (one row per order, one row per customer, one current row per device); resolve business keys so the same customer from three source systems becomes one identity; standardise units, currencies, country codes, status enumerations; drop or quarantine records that fail validation; apply light enrichment such as joining a reference table. Silver's guarantee is that the table means what its name says, at a stated grain, and that the stated grain actually holds. Silver tables are usually still entity-shaped — orders, customers, sessions — rather than report-shaped. Several gold tables can be built from one silver table, which is precisely why the layer exists: the deduplication and key resolution are written once instead of once per report. ## Gold: business semantics Gold is what consumers query. This is where dimensional models live — fact tables at a business-process grain with their dimensions — along with aggregates and curated metric tables. Gold encodes *business decisions*: which orders count as revenue, how returns are treated, which customers are active. It is shaped for the consumer's access pattern rather than the source's structure, and it is the layer whose column names appear in dashboards, so its schema is the one you are least free to change casually. ## The same idea under other names Analytics-engineering projects often call the same three tiers **staging**, **intermediate** and **marts**; older warehouse teams say landing / integration / presentation. The vocabularies map onto each other closely enough that interviewers use them interchangeably, and being able to say "staging is bronze-to-silver, marts are gold" is worth more than defending one label. ## What the boundaries actually buy you Three things. **Replayability**: because bronze is retained unchanged, any downstream table can be recomputed after a logic bug. **Reuse**: cleaning happens once, so twenty gold tables share one definition of a deduplicated order. **Blame isolation**: when a number is wrong you can ask a sequenced question — did the source send it wrong (bronze), did we clean it wrong (silver), or did we define the metric wrong (gold)? Without layers that debugging is one undifferentiated pile of SQL. ## Common misplacements Aggregating in silver so that the detail is gone; putting a report-specific filter (`WHERE region = 'EMEA'`) into a shared silver table; deduplicating in gold, so every gold table repeats the same window function; letting a dashboard read bronze because silver was late; storing a "cleaned" copy in bronze because it was convenient. Each of these dissolves a boundary and, with it, the guarantee. ## Do all datasets need three layers? No. A single clean, well-typed source with no duplicates may go bronze straight to gold; a large domain with six overlapping sources may justify more than one silver stage. The layers are there to place contract boundaries where responsibility changes hands, and a copy that adds no guarantee is just storage cost and one more thing to keep fresh.

  • Where does deduplication belong, and what goes wrong if you do it in gold instead?
    Deduplication belongs in silver, at the layer where the grain is first declared. Done in gold, every gold table repeats the same window function or DISTINCT, and the moment two of them diverge — different tie-break column, different ordering — two reports disagree about how many orders exist. One definition, one place, many consumers.
  • Does every dataset have to pass through all three layers?
    No. Layers exist to place contract boundaries where responsibility changes hands, not to fill a diagram. A single clean, well-typed source with no duplicates can go from bronze to gold directly; a domain fed by six overlapping systems may deserve more than one silver stage. A copy that adds no guarantee is pure cost.
  • How does bronze/silver/gold map onto staging, intermediate and marts?
    They are the same convention with different vocabulary. Staging is the thin typed layer over raw — bronze into early silver; intermediate models hold the reusable cleaning, deduplication and key resolution, which is the rest of silver; marts are gold, the consumer-facing dimensional and metric tables. Interviewers use the two vocabularies interchangeably.

Bronze is the unopened delivery crate with its packing slip, silver is the stock checked in and labelled on the shelf, gold is the finished dish on the menu.

saying these in an interview costs you the question

  • Says bronze should be cleaned and validated on ingest
  • Treats the layers as folders with no guarantees attached
  • Puts report-specific filters into shared silver tables
  • Claims every dataset must pass through all three layers
  • Says gold is just a renamed copy of silver

context