Over vertrouwen in data, een zilveren dataproduct en één veld dat door de mand viel.
door Sem Lemmers
Een goed dataproduct levert niet alleen data, maar ook vertrouwen. Je weet wat de data betekent, welke kwaliteit je mag verwachten en wie verantwoordelijk is als iets niet klopt. Juist wanneer er wél iets afwijkt, bewijst die aanpak zijn waarde.
Dat is wat Iris ontdekte toen ze maandagochtend begon met een simpele opdracht: een nieuw dashboard over ritpatronen in New York. Ze is analytics developer, een gecombineerde rol van analytics engineer en BI developer. Dat betekent: zij modelleert de data door van de kwaliteitslaag naar rapportage-klare datasets, én ze bouwt daar de dashboards op.
Ze opent Qlik Cloud en vindt in de marketplace het dataproduct NYC Taxi & Limousine Commission. Zilver-status, volgens de medallion-architectuur: de ruwe brondata is opgeschoond en getransformeerd, maar nog niet verrijkt of geaggregeerd. Precies wat Iris zoekt. Goud zou voor haar te ver doorgewerkt zijn, dan heeft iemand anders al keuzes gemaakt die zij zelf wil maken. Ruw is te vroeg, dan is ze de halve week bezig met schoonmaken. Zilver is het overdrachtspunt: kwaliteit geborgd, flexibiliteit behouden.
Eerst kijken, dan bouwen
Wat voor Iris telt voordat ze ook maar één regel script schrijft: kan ik hierop vertrouwen? Ze hoeft er niemand voor te bellen. Het dataproduct vertelt het zelf.
De cijfers staan er gewoon: 99% validity en 99,5% completeness over het hele product, met een Trust Score van 3.8/5. Ze klikt door naar de feitentabel Trip, het hart van het sterschema, één rij per taxirit met tijdstip, locatie, afstand en de volledige tariefopbouw. 100% valide, 100% compleet. Elke dataset heeft een omschrijving, elk veld ook. Er hangt een glossary aan waarin termen als Trip, Medallion en Zilver-laag zijn vastgelegd en gekoppeld aan de onderliggende datasets. De documentatie beschrijft de herkomst, het sterschema en zelfs de ML-toepassingen waarvoor de data geschikt is. En er staat een key contact bij: de data engineer die het product beheert.
Dit is het deel van governance dat je normaal niet ziet, omdat het gewoon wérkt. Iris hoeft niet te raden wat een veld betekent, niet te mailen waar de data vandaan komt, niet te hopen dat het compleet is. Ze leest het af.
En dan: het veld Date
Bij de datumdimensie stokt het. De validity van QLT_Date staat op 93,6 — netjes, maar duidelijk lager dan de rest. En de Trust Score is recent gezákt, van 76,2 naar 75,0. Iris opent de kwaliteitsdetails en ziet de boosdoener: het veld Date wordt afgekeurd door een eigen validatieregel.
Even context. Qlik herkent standaard prima of iets een datum is. Maar “een datum zijn” is niet hetzelfde als “onze datum zijn”. In de afgesproken kwaliteitsafspraken staat dat datumvelden in de zilver-laag een kale datum zijn, in een vast formaat, zonder tijdcomponent. Daarvoor bestaat geen standaardcheck, dus hebben we er een eigen semantisch type met validatieregel voor gedefinieerd. Zo’n regel maak je één keer en hij draait daarna mee in elke kwaliteitsberekening.
En die regel doet nu precies waarvoor hij bestaat. Het veld Date wordt getoond met twintig tot tweeëntwintig tekens: een datum mét tijdsaanduiding. Voor het oog onschuldig, er staat toch gewoon een datum? Voor Iris een probleem: een datum met tijdsaanduiding toont niet netjes in een dashboard, en elke afwijking van het afgesproken formaat betekent dat iedere developer het straks nét even anders oplost. Zonder de eigen regel was dit nooit opgevallen. De standaardchecks vonden het prima. De kolom was voor 100% gevuld. Alles zag er groen uit, behalve op het ene punt waar wij hebben gezegd: dit is onze afspraak.
Zelf fixen of teruggeven?
Iris heeft nu een keuze, en het is een verleidelijke. Qlik heeft sinds kort de table recipe: een no-code, spreadsheet-achtige manier om een dataset gebruiksklaar te maken. Je opent de tabel, ziet per kolom een kwaliteitsbalk, en past stap voor stap bewerkingen toe. Converteren, opschonen, formatteren, uit ruim zestig visuele functies, met direct zicht op het resultaat. Elke stap wordt vastgelegd in het recept, dat herbruikbaar is en meedraait bij iedere verversing. Voor precies dit soort klussen is het gemaakt: van een string-met-tijd een nette datum maken kost haar enkele minuten, zonder één regel script.
Ze bouwt het zelfs even, als proef. Kolom selecteren, tekst naar datum, tijdcomponent eraf, formaat conform afspraak. De kwaliteitsbalk kleurt groen. Opgelost, voor háár.
En precies daar begint de twijfel. Want het dataproduct zelf is nog steeds fout. Elke collega die het straks uit de marketplace pakt, loopt tegen hetzelfde veld aan en repareert het op eigen houtje. Drie developers, drie recepten, drie nét verschillende datums. Dan is de afspraak waarvoor de validatieregel bestond alsnog verdampt; alleen nu onzichtbaar, verstopt in ieders eigen laatste meter.
Wie zoekt, vindt meer
Nu Iris toch in de kwaliteitsdetails zit, kijkt ze verder. De profiling van QLT_Date laat nog twee dingen zien. HolidayUSA is in 362 van de 365 rijen leeg. Verklaarbaar (niet elke dag is een feestdag), maar het drukt de completeness en verdient een bewuste keuze: leeg laten of vullen met een default. Pijnlijker: een reeks afgeleide velden als WeekOfYear en DayOfWeekInMonth bevat voor álle 365 dagen dezelfde waarde. Constant 1. Geen validatieregel die daarover valt, geen lege cellen, geen foutmelding. Gewoon stilletjes kapot. Wie hier een weekrapportage op bouwt, krijgt één hele lange week één.
Dat beslecht de keuze. Het formaat van Date had ze zelf kunnen rechttrekken, maar kapotte afleidingen repareer je niet in de laatste meter. Die horen thuis waar ze gemaakt worden. De lineage wijst haar in twee klikken naar de kwaliteits-app die de zilveren QVD’s produceert, en het key contact staat gewoon bij het product. Eén bericht naar de data engineer, met de scores als bewijs en haar proefrecept als bijlage. Geen klacht, maar een kant-en-klare specificatie: dít moet het veld worden.
Wat dit verhaal eigenlijk vertelt
De verleiding is om dit een verhaal over een foutje te noemen. Het is het omgekeerde. De fout bestond al, het systeem heeft hem alleen zichtbaar gemaakt, op het moment dat het er nog niets kostte. Iris vond hem vóór het dashboard bestond, niet erna in een verhitte vergadering over waarom de weekcijfers niet kloppen.
Dat is wat een dalende Trust Score is: geen schande, maar een signaal dat werkt. Kwaliteitsscores die altijd op 100 staan, meten niets. En generieke checks bewaken alleen generieke afspraken. De afspraken die er echt toe doen, die van jouw organisatie, moet je zelf vastleggen. Eén eigen validatieregel op één veld was hier het verschil tussen “ziet er goed uit” en “klopt”.
En dan de keuze van Iris. De table recipe gaf haar de macht om het zelf op te lossen, en dat is precies waarom haar beslissing telt. Zelf kúnnen fixen is goud waard; weten wanneer je het niet moet doen, dat is governance. Een recipe is perfect voor de laatste meter: jouw dataset, jouw analyse, jouw tempo. Maar een semantisch verschil tussen de zilver-laag en het dataproduct is geen laatste-meter-probleem, het is een contractbreuk bij de bron en die los je bij de bron op. Anders koop je snelheid vandaag met wildgroei morgen.
Iris pakt ondertussen gewoon door. De Trip-tabel is vlekkeloos, het model staat aan het eind van de dag. De datumdimensie sluit ze volgende sprint aan, zodra het veld Date weer gewoon een datum is. Haar proefrecept gooit ze dan weg. Het beste recept is het recept dat je niet meer nodig hebt.
Iris is een fictieve ‘persona’ en in het leven geroepen om de functionaliteit en waarde van data producten te verbeelden. Data producten zijn een onderdeel van Qlik Cloud en is de poort tussen data engineering en analytics. Dat de rollen analytics engineer en BI developer zijn samengevoeg is in de Qlik wereld heel gangbaar, maar niet noodzakelijkerwijs altijd het geval. Een dataproduct met zilver-status datasets kan prima naast dataproducten met goud-status datasets. Een dataproduct is een gecureerde, gedocumenteerde en kwaliteitsgeborgde set data die als kant-en-klaar pakket wordt aangeboden aan gebruikers, met eigenaar, afspraken en vertrouwen inbegrepen.



