Het datamodel is het werk. De grafiek is de laatste dag.
De meeste dashboardprojecten lopen niet vast op de visualisatie maar op de laag eronder. Wat een datamodel is en waarom het eerst komt.
Wie een dashboard bestelt, denkt meestal aan de grafieken. Logisch, want dat is het enige dat je ziet.
Maar in vrijwel elk traject dat ik doe, zit negentig procent van het werk in de laag eronder. En als die laag niet klopt, krijg je mooie grafieken die niemand vertrouwt.
Wat een datamodel is
Kort gezegd: de manier waarop je gegevens uit verschillende bronnen aan elkaar hangen, zodat je er vragen aan kan stellen die geen van die bronnen alleen kan beantwoorden.
Een voorbeeld. Je wil weten welke productgroep in welke maand in welke vestiging het best draaide. Daarvoor heb je verkoopregels nodig, een artikellijst met productgroepen, een vestigingenlijst en een kalender. Vier dingen die in drie verschillende systemen zitten en die je aan elkaar moet kunnen koppelen zonder dat er iets wegvalt.
Dat koppelen is het datamodel. Niet de grafiek erbovenop.
Waarom een kalender apart bestaat
Dit is het onderdeel waar mensen het vaakst over struikelen, dus even concreet.
Je hebt een aparte tabel nodig met alle dagen erin. Niet de datums die toevallig in je verkopen voorkomen, maar alle dagen, ook de dagen zonder omzet.
Waarom? Omdat je anders nooit kan zien dat er op een dag niets verkocht is. Die dag bestaat dan gewoon niet in je rapport en je gemiddelde is stil vertekend. En omdat je aan zo'n kalender dingen kan hangen die nergens anders staan: schoolvakanties, feestdagen, koopzondagen, weken waarin je een actie deed.
Een verkoopdaling in een week met twee feestdagen is geen verkoopdaling. Zonder kalendertabel weet je dashboard dat niet.
Waar het meestal misloopt
Drie dingen, in volgorde van hoe vaak ik ze tegenkom.
Geen unieke sleutels. Twee bronnen die je op naam moet koppelen in plaats van op nummer. Dan krijg je altijd een resultaat, maar er valt stil van alles weg en niemand weet hoeveel.
Verschillende granulariteit door elkaar. Je verkopen staan per lijn, je budget per maand, je passage per uur. Die kan je niet zomaar naast elkaar zetten. Je moet expliciet beslissen op welk niveau je ze samenbrengt, en wat er gebeurt met wat niet past.
En bedragen in verschillende vormen. Inclusief of exclusief btw, in verschillende valuta, voor of na korting. Als die door elkaar lopen in één tabel, klopt geen enkel totaal, en de fout is klein genoeg om lang onopgemerkt te blijven.
Als de bron zelf niet klopt
Er is één geval waarin geen enkel datamodel je gaat redden, en dat is wanneer de bron in een staat verkeert waarin niets betrouwbaar is.
Bij een aannemer die we begeleidden, zat alles netjes in hun facturatiepakket. Facturen, offertes, leveringen. Op het eerste gezicht een volledige bron.
Tot je vier dingen vaststelt. De openstaande facturen werden nooit afgepunt tegen de bankafschriften, dus openstaand betekende alleen dat niemand het had aangeduid als betaald. Geweigerde offertes bleven gewoon in het systeem staan, dus het orderboek was voor een deel fictie. De planning stond nergens genoteerd, dus er was geen enkel verband tussen wat verkocht was en wanneer het uitgevoerd werd. En leveringsbonnen werden niet nagekeken tegenover wat besteld was, dus je wist niet of wat gefactureerd werd overeenkwam met wat geleverd was.
Elk van die vier maakt één specifieke vraag onbeantwoordbaar. Samen maken ze bijna elke vraag onbeantwoordbaar die een zaakvoerder zou stellen.
Het verraderlijke is dat je hier prima een model op kan bouwen. De cijfers komen eruit, ze tellen op, ze zijn verdedigbaar tegenover de bron. En ze zijn fout, want de bron beschrijft niet wat er werkelijk gebeurd is.
Daarom hoort er voor het modelleerwerk een stap die bijna niemand inplant: nagaan of de processen die je data voeden ook echt uitgevoerd worden. Niet of het systeem het kan, of het gebeurt. Wordt er afgepunt. Worden dossiers afgesloten. Wordt er nagekeken.
Als het antwoord nee is, dan is dat je eerste project en niet je model. Dat is een vervelende boodschap om te brengen en het is de enige eerlijke.
Waarom dit eerst moet
Omdat elke grafiek die je op een slecht model bouwt, opnieuw moet als je het model repareert. En omdat een fout in het model zich vermenigvuldigt: hij zit in elk rapport dat erop steunt, en meestal merk je het pas als iemand een getal herkent dat niet klopt.
Dat is ook het moment waarop een dashboard zijn geloofwaardigheid kwijtraakt, en die krijg je niet makkelijk terug. Één verkeerd totaal in een vergadering en mensen halen er weer hun eigen Excel bij.
Hoe je weet of het goed zit
Een paar controles die je zelf kan doen, zonder technische kennis.
Neem een totaal dat je kent uit een andere bron, bijvoorbeeld je omzet van vorige maand volgens je boekhouding, en kijk of je dashboard hetzelfde zegt. Zo niet, dan moet iemand kunnen uitleggen waarom, en "afrondingsverschil" is geen antwoord bij een verschil van meer dan een procent.
Filter op iets waarvan je weet dat het leeg moet zijn en kijk of er dan ook echt niets staat. Vaak duikt er dan een categorie "onbekend" op, en daar zit precies wat in je koppeling wegviel.
Tel het aantal regels in je bron en in je model. Die twee horen te kloppen, of het verschil hoort verklaarbaar te zijn.
Hoe lang het duurt
Bij een kmo met twee of drie bronnen ben je met het model een paar dagen bezig, op voorwaarde dat de definities vastliggen. Doen ze dat niet, dan duurt het zolang als het gesprek daarover duurt, en dat is meestal de echte doorlooptijd van een project.
De grafieken zijn daarna een kwestie van uren. Dat is het deel dat er indrukwekkend uitziet en dat het minst werk is.
De stelling
Als iemand je een dashboard aanbiedt en het gesprek gaat over kleuren en grafiektypes voor het over je bronnen en je definities gegaan is, dan koop je een etalage zonder winkel erachter.