In dit artikel legt Daan Dirven, expert op het gebied van Datamanagement & Data Governance, uit wat de datakwaliteitsdimensie Volledigheid is en waarom deze zo belangrijk is voor organisaties. Hij bespreekt hoe Volledigheid bijdraagt aan de betrouwbaarheid van data en hoe je deze dimensie effectief kunt toepassen om datakwaliteit te waarborgen. Heb je vragen of wil je reageren? We nodigen je uit om je inzichten te delen via de link onderaan het artikel van Daan.
Completeness / Volledigheid
“Completeness measures the degree of population of data values in a data set”. Oftewel:
Volledigheid meet de mate waarin gegevenswaarden aanwezig zijn in een dataset. Dit is vaak een van de makkelijkste dimensies om te toetsen.
Completeness / Volledigheid
Gegevens die ontbreken kunnen leiden tot verschillende problemen. Een aantal voorbeelden:
Onvolledige adressen: facturen en / of bestellingen kunnen niet worden verzonden.
Ontbrekende taxatiewaarde bij registratie van hypotheek onderpanden: waarde van het onderpand is niet vast te stellen, wat tot grotere reserveringen voor het afdekken van kredietrisico’s leidt.
Ontbrekende klantgegevens: Segmentatie van klanten wordt onbetrouwbaar, waardoor marketingcampagnes minder effectief zijn.
Ontbrekende vaccinatiegegevens: onjuiste rapportages (bijvoorbeeld op het corona dashboard) leiden tot ondermijning van vertrouwen. Reizigers die niet konden aantonen dat ze waren gevaccineerd.
Ontbrekende Tachograaf gegevens: Door het niet juist gebruik van bedrijfskaarten in tachografen ontbreken er gegevens. Dit leidt tot boetes per dag waar de gegevens niet bekend voor zijn.
Ontbrekende gegevens moeten later worden ingekocht of alsnog ingevoerd. Dit leidt weer tot verdere extra kosten.
Voor de datakwaliteitsdimensie Volledigheid kunnen we de volgende concepten onderscheiden:
Record volledigheid
Hier controleren we of alle rijen die we verwachten ook daadwerkelijk aanwezig zijn. Zitten alle klanten uit ons bronsysteem ook daadwerkelijk in het datawarehouse? Dit is eenvoudig te controleren door middel van een outer join op de (business)key. Daar waar de sleutel leeg is voor de doeltabel, ontbreekt de rij.
Attribuutwaarde volledigheid
Is de waarde voor een record aanwezig? Vaak wordt dit gedaan door een eenvoudige controle op NULL waarden. Als de waarde voor het attribuut ontbreekt, is het record onvolledig.
Datakwaliteitsregels horen in samenspraak met de bedrijfsvoering te worden gemaakt. Dat leidt dan soms tot discussie over de definitie van ‘volledig’. Dan kom je soms niet weg met het simpelweg controleren op ‘IS NOT NULL’. We moeten ook kijken naar de zogenaamde Fake NULLS. Dit zijn NULLS die zich stiekem voordoen als not NULL. Als een systeem bij het ontbreken van een datum standaard ‘31-12-9999’ of -nog erger ‘01-01-1900’- invult, betekent dat voor een gebruiker vaak helemaal niks. Als je dan enkel controleert op NULLs, ziet de controle voor het attribuut geboortedatum er geweldig uit: 100% volledigheid! Alle data zijn namelijk gevuld. Maar uit het perspectief van de gebruiker worden de default data geïnterpreteerd als NIET aanwezig. Ik vind dan ook dat je bij volledigheidscontroles op attributen ook rekening moet houden met de Fake NULLs.
Data Profiling kan helpen bij het ontmaskeren van Fake NULLs. Tijdens het profilen kun je de data controleren op veel voorkomende waarden. Een eenvoudige frequentietabel met de meest voorkomende waarden geeft vaak al een indruk van het eventueel misbruik van fake NULLs. Als in de top 10 waarden als ‘-’, ‘#N/A’ en soms zelfs letterlijk de tekst ‘NULL’ tegenkomt, kun je met de gebruikers, waarmee je de Datakwaliteitsregels afstemt, bepalen of deze waarden als ontbrekend moeten worden beschouwd.
Bestaan
In hoeverre is een object/feit in de echte wereld aanwezig als gegeven? Is de administratie van ons wagenpark volledig en staan alle voertuigen die we bezitten ook daadwerkelijk in de database? Deze is weer net zo lastig te controleren als Juistheid. De database zou een representatieve weergave van de werkelijke wereld moeten zijn. Maar om dat vast te stellen moeten we toevlucht zoeken in steekproeven waarbij van de objecten die we fysiek zien, ook daadwerkelijk een registratie in onze systemen hebben.
Afkapping
Bevat de waarde ook alle karakters? Hierbij controleer je of alle tekens uit een bron ook in de doeltabel zijn terechtgekomen zonder dat de oorspronkelijke tekenreeks ergens wordt afgekapt.
Dit is er eentje die ik zelf eerder in de dimensie Consistentie zou laten vallen. Daarbij controleer je namelijk of de gegevens over verschillende systemen equivalent zijn.
Conditionele Volledigheid
Bovenstaande concepten kunnen helpen bij het afstemmen van volledigheidsvereisten. “Ja maar Daan, we hebben in onze database NOT NULL constraints op de attributen die verplicht zijn, dus volledigheidscontroles zijn overbodig”. Dat gaat maar ten dele op, zie ook bovengenoemde concepten als record volledigheid, afkappen en bestaan. En denk ook aan de Fake NULLS! Juist als in systemen het invullen van bepaalde attributen verplicht gemaakt wordt, komen deze op als paddenstoelen in de herfst.
Je moet je dan afvragen waarom er dan maar iets ingevuld wordt, alleen om naar het volgende scherm in de applicatie te kunnen doorklikken. Vaak blijkt dat de gegevens dan verplicht zijn onder bepaalde condities. Hier zijn vaak business rules voor van toepassing. Zo vul je een ingangsdatum van een contract misschien pas in, op het moment dat het contract ook daadwerkelijk actief is (ondertekend). Bij het toetsen van deze attributen, moet dus ook deze business rule worden meegenomen: “Als het contract actief is, is de ingangsdatum gevuld.”
Meer weten?
In hoeverre houden jullie rekening met Fake NULLs bij completeness checks? Wat is de volgende DQ dimensie die je besproken wil zien en waarom? We maken er gewoon een serie van….