Single Source of Truth (SSoT, DWH)

Uit De Vliegende Brigade
Naar navigatie springen Naar zoeken springen

Single Source of Truth (SSoT) heeft betrekking op de vraag welke data in een datwarehouse (dwh) authentiek is.

Traduttore, traditore

In een dwh ontstaat al snel een enorme hoeveelheid data. In mijn ervaring komt die data uit twee bronnen:

  • Import
  • Intern gegenereerde data ahv. import - In mijn ervaring is dit veel meer data dan door import.

Elke keer dat data wordt verwerkt, is er een kans dat informatie verloren gaat, of verminkt raakt. Kwestie van toenemende entropie. Dat speelt op een elementair niveau. Een paar voorbeelden:

  • De betekenis van een entiteit (bv. de naam van een kolom) is open voor verschillende interpretaties
  • Data uit 'gevestigde' bronnen, zoals Channable of Exact zijn ambivalent omdat gebruikers eigen velden hebben gedefineerd waarvan ze zelf ook niet meer goed weten wat het precies betekent, of omdat ze de betekenis van vaste kolommen anders interpreteren dan dat de makers van Channable of Exact het bedoeld hebben
  • Data is geaggregeerd (bv. omzetcijfers inclusief niet nader gespecificeerde transportkosten)
  • Vergelijkbare data uit verschillende bronnen is niet 100% hetzelfde (bv. financiële resultaten Bol.com en Amazon), meestal vanwege aggregatie
  • Verschil in aantal significante cijfers: Prima te voorkomen, maar alleen als je goed oplet - Bv. bij import van percentages vanuit Excel
  • Vertaalproblemen: Van een klant kreeg ik een deel van de omschrijvingen in het Frans, en een deel in het Spaans, terwijl ik het in het Engels en Duits nodig heb
  • Soms is data te ingewikkeld of te ongestructureerd om 100% accuraat te verwerken binnen een gestelde planning. Dan worden er bv. vereenvoudigingen toegepast
  • Waar gewerkt wordt, worden fouten gemaakt. Kwestie van statistiek: Op een gegeven moment onstaan er fouten
  • Voortschrijdend inzicht: Sommige projecten die ik doe, lopen al een paar jaar. Ik gebruik nog steed veel data die bv. vijf jaar oud is. Ik vraag me regelmatig af, wat er zou veranderen als ik die data opnieuw vanaf scratch zou genereren.

Wat is authentiek?

Het probleem dat hierboven werd geschetst, roept vroeg of laat de vraag op:

  • Welke data is authentiek?
  • Welke data is onveranderd sinds ik er de beschikking over heb gekregen

Dit vraagstuk is belangrijk voor verificatie van resultaten, waaronder of de fout bij mij ligt, of bij de bron van de data.

Oplossing: Brontabellen

De oplossing die ik heb gekozen: importtabellen of brontabellen zijn authentiek. Die data is dus zo ruw mogelijk. Belangrijk dat deze brontabellen gemakkelijk zijn te vergelijken met de oorspronkelijke bron (bv. aangeleverde spreadsheets of XML-bestanden).

Nieuw probleem: Importtabellen zijn onwerkbaar

In de praktijk zijn importtabellen onwerkbaar: Die data is gewoon té ruw om bruikbaar te zijn. Al is het maar omdat de namen van kolommen verwarrend is, of omdat de data te ongestructureerd is (bv. verschillende talen die door elkaar heen lopen).

Oplossing: Tussentabellen als abstractielaag

De oplossing: Tussentabellen gebruiken als abstractielaag: Die importtabellen worden via vaste procedures (bij voorkeur sprocs) verwerkt tot tussentabellen. In het dwh hebbenn deze de extentie _tmp, want het zijn immers tijdelijke tabellen: Voortdurend worden deze tabellen opnieuw gegenereerd aan de hand van de brontabellen. Deze tussentabellen zijn gestandaardiseed, zodat ik er gemakkelijk mee kan werken.