Dimensioneel modelleren: SCD uitbreidingen

Al jaren geleden heeft Ralph Kimball als een van de grondleggers van de theorie van dimensioneel modelleren toegelicht hoe we omgaan met wijzigingen in gegevens, en welke impact deze hebben op het rapporteren van gegevens. Deze theorie is toen Slowly Changing Dimensions (SCD) genoemd. Er zijn toen drie soorten SCD onderkend, met de veelzeggende namen Type 1, 2 en 3.

Kort gezegd kwam het hier op neer:

  1. De waarden in de dimensie worden overschreven. Je ziet dus altijd het “hier-en-nu”. Feitelijk is dit geen historie.
  2. De veranderingen worden bewaard in een nieuwe rij met tijdgeldigheid. Je kunt dus altijd zien hoe iets is op een bepaald moment. Dit is volledige historie.
  3. De veranderingen worden bewaard in kolommen in dezelfde rij. Daardoor kun je alleen de huidige stand van zaken vergelijken met de vorige. Hierbij is sprake van partiële historie.

In de praktijk zijn er door diverse mensen uitbreidingen toegevoegd, die nooit formeel in de theorieboeken zijn opgenomen. Tot voor kort dan, want in 2013 zijn in de theorie ook 4 nieuwe typen SCD toegevoegd, die we nu zullen toelichten.

Type 0: Wijzigt nooit

In dit geval wijzigt geen van de waarden van de dimensie attributen.

Een typisch voorbeeld van een type 0 dimensie is de tijdsdimensie.

Type 4: Enkele waarden als reeksen

Volgens de theorie heet dit type “het toevoegen van een mini-dimensie”. Het komt er op neer dat bepaalde attributen, die snel wijzigen, uit de oorspronkelijke dimensie als reeksen worden opgenomen (de zogenaamde “bracket dimensions”). Deze mini-dimensie wordt direct aan de feittabel gekoppeld.

Voorbeelden van reeksen zijn inkomens- en leeftijdsgroepen.

Een type 4 komt neer op een type 1 voor de langzaam wijzigende gegevens en een type 1 voor de snel wijzigende gegevens, die als reeksen worden getoond.

Doordat de waarden als reeksen niet (snel) opnieuw ingedeeld worden, zie je de feiten in historisch perspectief. Voorbeeld: Bij de verkoop van 3-1-2014 was deze klant tussen de 30 en 35 jaar oud.

Type 5: Enkele waarden als reeksen en de huidige reeks met waarden

In essentie komt type 5 neer op een type 4, uitgebreid met een “dimension helper table” waarin de huidige reeks met waarden opgeslagen liggen. De naam type 5 komt van type 4 + type 1 voor de huidige waarden.

In het bovenstaande voorbeeld worden de feiten gekoppeld aan de klantgegevens en reeksen (klantprofiel) op het moment dat het feit zich voltrok (bijvoorbeeld het moment waarop een verkooptransactie plaatsvond).En deze gegevens kunnen dan worden afgezet tegen het klantprofiel dat op dit moment geldig is voor de klant.

Bij dit type SCD is naamgeving uitermate belangrijk om verwarring voor business users te voorkomen. Alle huidige waarden moeten ook “huidige” genoemd zijn.

Type 6: Huidige waarden opnemen in een type 2 SCD

Dit type komt er op neer dat in basis een type 2 dimensie wordt genomen, die we uitbreiden met extra kolommen om de huidige waarde vast te leggen. Dit stelt ons in staat om de waarden met de bril van toen en nu naast elkaar te zetten.
Of we kunnen voor snel(ler) wijzigende attributen besluiten om geen historie bij te houden.

In feite is dit een hybride type scd (1 en 2).

De naam is afkomstig van de Type 2 en Type 3 combinatie (2 * 3 = 6).

Type 7: Huidige waarden (1) en historische waarden (2) in aparte dimensies opnemen

Bij deze oplossing komt het neer op het koppelen van een feit aan een type 2 dimensie (kijken met de bril van toen) en een type 1 dimensie (kijken met de bril van nu).

Met deze oplossing is hetzelfde mogelijk als met een type 6, maar dan gebeurt dat door in de feittabel twee verwijzingen op te nemen. Ook hier geldt dat strikte naamgeving nodig is om de huidige situatie te onderscheiden van de historische variant.

De dimensie met de huidige situatie wordt steeds bijgewerkt op het moment dat er een nieuwe rij wordt toegevoegd aan de type 2 dimensie.

Alle typen slowly changing dimensions op een rij.
Reacties zijn gesloten.