{"id":13373,"date":"2026-05-12T11:10:00","date_gmt":"2026-05-12T10:10:00","guid":{"rendered":"https:\/\/sparkle.consulting\/medallion-architecture\/"},"modified":"2026-07-09T18:07:51","modified_gmt":"2026-07-09T17:07:51","slug":"medallion-architecture","status":"publish","type":"post","link":"https:\/\/sparkle.consulting\/nl\/medallion-architecture\/","title":{"rendered":"Medallion-architectuur"},"content":{"rendered":"<p>Een gelaagd data-designpatroon dat ruwe data stap voor stap verfijnt tot schone, business-ready inzichten, via de lagen Bronze, Silver en Gold.<\/p>\n<h3>Ontwerpprincipes<\/h3>\n<p>Medallion-architectuur is gebouwd op een set praktische engineeringprincipes die de re\u00eble noden van datateams weerspiegelen:<\/p>\n<ul>\n<li><strong>Ontkoppeling<\/strong>, Data in lagen scheiden houdt flexibiliteit in stand. Wijzigingen in een bronsysteem cascaderen niet door naar je rapporteringslaag.<\/li>\n<li><strong>Operationele rapportering en analytics<\/strong>, Applicatieteams hebben vaak near-real-time inzichten nodig uit operationele data, die op hun beurt gebruikt kunnen worden om de operationele systemen zelf te verbeteren.<\/li>\n<li><strong>Historische bewaring<\/strong>, Teams moeten data jarenlang bewaren, voor trendanalyse, kwaliteitsverbetering en de mogelijkheid om te herladen of te herverwerken wanneer pipelines wijzigen.<\/li>\n<li><strong>Integratie<\/strong>, Businessvragen leven zelden binnen \u00e9\u00e9n enkel systeem. Data uit meerdere bronnen combineren tot ge\u00efntegreerde perspectieven is een kernreden waarom de architectuur bestaat.<\/li>\n<li><strong>Duplicatie voor performance<\/strong>, Verschillende teams hebben verschillende leespatronen en performance-eisen. Data dupliceren over lagen heen (bv. een samengevatte Gold-tabel naast een gedetailleerde Silver-tabel) is bewust, niet verspillend.<\/li>\n<\/ul>\n<hr>\n<h3>Waarom data \u00fcberhaupt in lagen opdelen?<\/h3>\n<p>Het principe weerspiegelt klassiek datawarehouse-denken (Inmon, Kimball, Data Vault). Medallion geeft die separation-of-concerns-idee\u00ebn een moderne, lakehouse-native thuis. Teams hebben historische data nodig voor auditing en herladen, ge\u00efntegreerde views voor analytics en performance-geoptimaliseerde reads voor rapportering, vaak tegelijk. Lagen maken elke zorg apart beheersbaar.<\/p>\n<hr>\n<h3>De drie lagen<\/h3>\n<p><strong>\ud83d\udfe4 Bronze, Ruw, \"as-is\"<\/strong> De landingszone. Data wordt as-is ingeladen, immutable, en opgeslagen in originele formaten (CSV, JSON, Parquet) voor de conversie naar Delta. Verrijkt met metadata zoals ingestion-timestamps en databronlabels. Ondersteunt zowel batch als streaming, en is waardevol voor debugging en historische herladingen.<\/p>\n<p><strong>\u26aa Silver, Opgeschoond en gefilterd<\/strong> Hier worden datakwaliteitsregels toegepast: datums corrigeren, speciale tekens verwijderen, formatteringsfouten rechtzetten. Historisatie gebeurt doorgaans met SCD2. De structuur blijft brongeori\u00ebnteerd maar is bevraagbaar en wordt gebruikt door operationele analyticsteams. Kolommen worden hernoemd voor leesbaarheid en er worden lichte conformaties aan enterprise-standaarden toegepast.<\/p>\n<p><strong>\ud83d\udfe1 Gold, Verfijnd op businessniveau<\/strong> Data wordt geharmoniseerd en ge\u00efntegreerd over bronnen heen, doorgaans gemodelleerd volgens de dimensionele Kimball-stijl (facts en dimensions). Complexe businessregels, berekeningen en verrijkingen leven hier. De output bestaat uit consumer-ready dataproducten met backwards compatibility en datacontracten voor downstream-gebruikers.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2026\/05\/medallion.jpg\" alt=\"Medallion Architecture layers\"><\/p>\n<hr>\n<h3>Praktijkvoorbeeld: ge\u00efntegreerde Ad-ROI-analyse<\/h3>\n<p><strong>De businessvraag:<\/strong> Een groeiend e-commercebedrijf wil de impact van marketinguitgaven over kanalen heen begrijpen. Het project: een ge\u00efntegreerde ROI-analyse voor multichannel-advertentiecampagnes.<\/p>\n<p><strong>Databronnen:<\/strong> Facebook Ads and Google Ads.<\/p>\n<p><strong>Rapporteringsvereisten:<\/strong> Kost, impressies, clicks, opgesplitst per ad, campagne, attributie (1-daags venster) en demografie (leeftijd, geslacht, device, platform).<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2026\/05\/appfabric.jpg\" alt=\"App Fabric\"><\/p>\n<hr>\n<h4>Bronze: laad alles<\/h4>\n<p>Facebook Insights stelt 134 velden beschikbaar plus extra parametercombinaties. Google Ads stelt 329 velden beschikbaar. De aanbeveling is simpel: laad alles wat de API's teruggeven.<\/p>\n<ul>\n<li><strong>Nadeel:<\/strong> Meer opslag gebruikt, maar opslag is goedkoop.<\/li>\n<li><strong>Voordeel:<\/strong> Je vermijdt het klassieke <em>\"Dit rapport is top! Kan je er nog net dit ene veld bij zetten?\"<\/em> conversatie.<\/li>\n<\/ul>\n<p>Transformaties zijn in dit stadium minimaal: corrupte of onbruikbare records verwijderen, converteren naar Delta-formaat, verrijken met metadata (databron, ingestion-timestamp), en enkel partitioneren per datum als datavolume een bottleneck wordt.<\/p>\n<hr>\n<h4>Silver: drie opties voor modellering<\/h4>\n<p>Hier vallen de echte ontwerpbeslissingen. Facebook en Google gebruiken verschillende veldnamen voor dezelfde concepten, <code>cost_micros<\/code> vs <code>spend<\/code>, <code>ad_group<\/code> vs <code>adset<\/code>, <code>segments.age_range<\/code> vs <code>age<\/code>, en sommige velden bestaan simpelweg niet op beide platformen.<\/p>\n<p><strong>Optie 1, twee aparte brontabellen<\/strong> Houd een Facebook-silvertabel en een Google-silvertabel bij, elk opgeschoond en hernoemd volgens een gemeenschappelijke naamgevingsconventie. Simpel te bouwen, behoudt bronnuance, maar vereist later joinen of unionen.<\/p>\n<p><strong>Optie 2, \u00e9\u00e9n ge\u00efntegreerde ads-tabel<\/strong> Map beide bronnen naar \u00e9\u00e9n gedeelde tabel in Silver. Eenvoudiger voor downstream-consumenten. Belangrijk: documenteer de mappingbeslissingen duidelijk, <code>adset<\/code> en <code>ad_group<\/code> zijn <em>geen<\/em> identieke concepten.<\/p>\n<p><strong>Optie 3, Data Vault<\/strong> Modelleer entiteiten als Hubs, relaties als Links en metrics als Satellites. Modulairder en beter in het volgen van wijzigingen in relaties doorheen de tijd. Best geschikt voor complexe, langlevende enterprise-dataplatformen.<\/p>\n<hr>\n<h4>Gold: twee opties voor serving<\/h4>\n<p><strong>Optie A, dimensioneel model (Kimball)<\/strong> Bouw een <code>Fact_Ad_Performance<\/code> tabel, gejoind met dimensietabellen. Proper, goed begrepen door BI-tools en makkelijk te slicen. Dit is de meest voorkomende aanpak.<\/p>\n<p><strong>Optie B, One Big Table (OBT)<\/strong> Denormaliseer alles in \u00e9\u00e9n brede tabel. Makkelijker voor analisten en self-service-rapportering, geen joins nodig.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/sparkle.consulting\/wp-content\/uploads\/2026\/05\/layers.jpg\" alt=\"Data layers\"><\/p>\n<hr>\n<h3>Uitdagingen<\/h3>\n<p><strong>Data governance<\/strong>, Alles in Bronze bewaren kan een GDPR-probleem worden. Toegangsrechten vragen duidelijke policies, zeker wanneer silvertabellen PII uit meerdere bronsystemen bevatten.<\/p>\n<p><strong>De menselijke factor<\/strong>, Medallion is een naamgevingsframework, geen rulebook. Zonder gedocumenteerde teamafspraken over wat in elke laag thuishoort, degradeert de architectuur tot inconsistentie en shadow pipelines.<\/p>\n<hr>\n<h3>Belangrijkste conclusies<\/h3>\n<ul>\n<li>Laad alles naar Bronze, opslag is goedkoop, maar later een veld missen is duur.<\/li>\n<li>Silver moet opschonen en conformeren; Gold moet modelleren en integreren, weersta de neiging om deze zorgen samen te voegen.<\/li>\n<li>Datamodelleringskeuzes in Silver (flat tables vs. Data Vault) hebben langdurige downstream-gevolgen.<\/li>\n<li>Documenteer je layer contracts. Consistentie over teams heen hangt af van geschreven, gedeelde afspraken.<\/li>\n<\/ul>\n<p>Medallion-architectuur oogt simpel op een diagram, maar de echte ontwerpbeslissingen, zeker in de Silver-laag, kunnen langdurige gevolgen hebben. Wil je de juiste aanpak voor jouw situatie doordenken, aarzel dan niet om <a href=\"https:\/\/sparkle.consulting\/nl\/contact-us\/\"><strong>een afspraak te boeken.<\/strong><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Een gelaagd data-designpatroon dat ruwe data stap voor stap verfijnt tot schone, business-ready inzichten, via de lagen Bronze, Silver en Gold.<\/p>","protected":false},"author":16,"featured_media":13381,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","footnotes":""},"categories":[9,71],"tags":[],"class_list":["post-13373","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","category-fabric"],"acf":[],"uagb_featured_image_src":{"full":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2026\/05\/medallionarch.png",2240,1260,false],"thumbnail":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2026\/05\/medallionarch-150x150.png",150,150,true],"medium":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2026\/05\/medallionarch-300x169.png",300,169,true],"medium_large":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2026\/05\/medallionarch-768x432.png",768,432,true],"large":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2026\/05\/medallionarch-1024x576.png",1024,576,true],"1536x1536":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2026\/05\/medallionarch-1536x864.png",1536,864,true],"2048x2048":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2026\/05\/medallionarch-2048x1152.png",2048,1152,true],"trp-custom-language-flag":["https:\/\/sparkle.consulting\/wp-content\/uploads\/2026\/05\/medallionarch.png",18,10,false]},"uagb_author_info":{"display_name":"Anneli Tomingas","author_link":"https:\/\/sparkle.consulting\/nl\/author\/anneli\/"},"uagb_comment_info":0,"uagb_excerpt":"A layered data design pattern that progressively refines raw data into clean, business-ready insights, moving through Bronze, Silver, and Gold layers.","_links":{"self":[{"href":"https:\/\/sparkle.consulting\/nl\/wp-json\/wp\/v2\/posts\/13373","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sparkle.consulting\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sparkle.consulting\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sparkle.consulting\/nl\/wp-json\/wp\/v2\/users\/16"}],"replies":[{"embeddable":true,"href":"https:\/\/sparkle.consulting\/nl\/wp-json\/wp\/v2\/comments?post=13373"}],"version-history":[{"count":4,"href":"https:\/\/sparkle.consulting\/nl\/wp-json\/wp\/v2\/posts\/13373\/revisions"}],"predecessor-version":[{"id":13694,"href":"https:\/\/sparkle.consulting\/nl\/wp-json\/wp\/v2\/posts\/13373\/revisions\/13694"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sparkle.consulting\/nl\/wp-json\/wp\/v2\/media\/13381"}],"wp:attachment":[{"href":"https:\/\/sparkle.consulting\/nl\/wp-json\/wp\/v2\/media?parent=13373"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sparkle.consulting\/nl\/wp-json\/wp\/v2\/categories?post=13373"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sparkle.consulting\/nl\/wp-json\/wp\/v2\/tags?post=13373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}