Lesson 2 — The medallion architecture
What you'll be able to do: explain why data moves through three layers, and say what each layer is responsible for.
The idea
Think about how a restaurant kitchen handles ingredients. Deliveries arrive at the back door exactly as the supplier sent them — crates, boxes, whatever. In prep, everything is washed, trimmed, portioned, and checked for quality. Only then does it reach the pass, plated and ready to serve.
You would never serve straight from the back door, and you'd never let a chef re-wash vegetables mid-service. Each stage has one job, and the separation is what keeps quality high and problems traceable.
The medallion architecture is that same discipline for data, with three stages:
| Layer | Kitchen analogy | Job |
|---|---|---|
| Bronze | The back door | Land raw data exactly as delivered. Keep it in its purest form. No cleaning yet. |
| Silver | Prep | Clean, type, standardize, apply quality checks. Trustworthy, well-shaped tables. |
| Gold | The pass | Business-ready models — facts, dimensions, measures — shaped for reporting. |
Why not just clean the data once and be done? Because the layers give you three things you can't get from a single step:
- Traceability — if a report looks wrong, you can walk back Gold → Silver → Bronze and see exactly where it changed.
- Reprocessing — Bronze keeps the raw truth, so you can rebuild Silver and Gold from scratch if your logic changes, without re-fetching from the source.
- Separation of concerns — each layer has one responsibility, so changes stay contained.
In EasyFabric
EasyFabric makes the medallion architecture the default, not something you assemble by hand. When you describe a table, you get its Bronze and Silver forms automatically.
- Bronze lands the source data as-is. If the table keeps history (the default), Bronze holds two tables: one for what the source just delivered, and a history table that records how each row changed over time — new, updated, or deleted. This is what lets a data warehouse answer "what did this customer record look like last March?".
- Silver takes Bronze and produces cleaned, correctly-typed columns. By default it keeps both the original value and a converted value, so nothing is silently lost.
- Gold is different in kind — it isn't generated from a single source table but from your model (Lesson 8), joining Silver tables into facts and dimensions ready for a semantic model and Power BI.
Each layer lives in its own lakehouse (a Fabric store that holds both files and tables). You'll see this in the folder tour in Lesson 5, and the full journey of a single row in Lesson 7.
The reference walks each layer in detail: Loading data — General covers Bronze → Silver → Gold, and Schema on write explains why the structure exists before any data lands.
Check your understanding
Your business logic for a "customer lifetime value" figure was wrong for a month. The raw source files were only kept for the last week. Can you fix the historical numbers? Why does the medallion structure matter here?
Yes — because Bronze keeps the raw data (and its history) inside your platform, independent of the source. You fix the logic and reprocess Silver → Gold from Bronze; you don't need the original source files at all. If you'd cleaned data in a single step and thrown the raw away, you'd be stuck with the source's short retention.
Why does EasyFabric keep both an "original" and a "converted" column in Silver by default, instead of just overwriting with the clean value?
So a conversion can never silently destroy information. If a date or number fails to parse, you can still see exactly what the source sent. It's the same instinct as Bronze keeping raw data: never discard the truth you started from, because you might need to audit or re-derive from it.
Recap
- Data flows Bronze (raw + history) → Silver (clean, typed) → Gold (business-ready), each layer with one job.
- The layers buy you traceability, reprocessing, and separation of concerns.
- EasyFabric makes this the default: describe a table and its Bronze/Silver forms appear; Gold is built from your model.
Next: why you describe tables instead of building them — Metadata-driven & schema-on-write →