in het artikel van vandaag wil ik me richten op Slowly changing dimension, oftewel SCD. Dimensie is een woord uit data warehousing als zodanig. Niet zonder reden wordt SCD zeer vaak gebruikt in termen van Data Warehouse (DW) onderwerpen en kan worden gebruikt voor audit doeleinden in OLTP-systemen.
het doel van het artikel is om de soorten langzaam veranderende dimensies te herzien omdat er weinig versies van zijn.
de gegevens veranderen in de loop van de tijd., U zou niet de zorg over historische versie van gegevens in uw OLTP-database, maar het kan zakelijke eis zijn om alle historische veranderingen te handhaven. Met andere woorden, je moet in staat zijn om te laten zien, in een verkooprapport, een juiste regionale kantoor van een verkoper, ongeacht wanneer de persoon de regio heeft veranderd. In dat geval moeten we de gegevens bewaren voor wijziging en na de update.
Hoe werken transformaties?
Er zijn weinig soorten SCD.
afhankelijk van het SCD-type kunt u geen, één of meer historische wijzigingen van rijen behouden.,
Het idee is eenvoudig: elke keer dat de rij verandert, wordt een oude versie (vóór UPDATE of DELETE) van de rij bewaard in de SCD-tabel.
de implementatie van deze dingen is niet altijd eenvoudig. Laten we eens kijken naar voorbeelden.
als voorbeeld van brongegevens zal ik de volgende gegevensrij gebruiken:
SCD brongegevens voorbeeld
in het bovenstaande voorbeeld is CustomerId een primaire sleutel in bron (OLTP) database.,
We introduceren surrogate key (CustomerKey) in DW om duplicatie van de originele CustomerId te voorkomen en om de prestaties te optimaliseren, vooral wanneer het bronsysteem Karakter of complexe sleutels gebruikt.
SCD data in Data Warehouse voorbeeld
SCD Type 0
Dit type behoudt geen wijzigingen van attributen. Het behoudt alleen de oorspronkelijke waarde zonder enige veranderingen. Het gebruikte vooral voor attributen die niet kunnen worden veranderd, zoals geboortedatum.,
SCD type 1: het overschrijven van de geschiedenis van een attribuut
Deze methode kan de veranderingen in gegevens niet bijhouden en overschrijft de oude gegevens met nieuwe. Zodra onze klant zijn adres wijzigt, zou een nieuw adres overschrijven:
SCD Type 1
zoals u kunt zien – het is heel eenvoudig om het proces te implementeren en te onderhouden – het is een eenvoudige update. In andere handen, het nadeel van deze aanpak is gebrek aan row ‘ s geschiedenis in Data Warehouse.,
SCD type 2: nieuwe rijen toevoegen
de methodologie houdt de geschiedenis bij door nieuwe rijen toe te voegen en er is geen limiet op het aantal wijzigingen.,iv id=”f3da287bb9″>
SCD Type 2
Bovendien kunt u kiezen op welke manier u wilt weten oudere rijen door het onderhouden van de huidige vlag van de kolom en/of UpdateDate:
SCD Type 2 met de huidige vlag
of de versie van rij, die zal worden verhoogd achtereenvolgens:
SCD Type 2 met versie
SCD-Type 3: extra historische kolommen
In deze aanpak is dat je het beheer van een beperkt bedrag van de geschiedenis door het toevoegen van extra kolommen voor het bijhouden van attributen.,
Als u de vorige en huidige stad van de klant wilt hebben, kunt u kolommen implementeren: PreviousCity en CurrentCity. Er zal slechts één rij in Data Warehouse (DW) per brondatabase zijn, daarom heeft Type 3 een beperkte bruikbaarheid en is het minder populair dan Type 1 en 2.
SCD type 3
u moet voorzichtig zijn als u type 3 van SCD wilt gebruiken. Zorg ervoor dat Business Analist en/of uw klant op de hoogte zijn van de beperkingen van de geschiedenis.,
SCD Type 4: aparte historische tabel
Dit type gebruikt aparte tabellen voor het bijhouden van de huidige records en historische veranderingen. Het is de moeite waard om te gebruiken wanneer:
• dimensie vrij vaak verandert of
• dimensie is multi-million rows table
SCD type 4 current table
SCD type 4 – historische tabel
Margy Ross van Kimball group noemt tabellen als “mini-dimensie”.,
SCD type 6:
deze benadering is genummerd als 6 als 1+2+3 = 6 en 1x2x3 = 6. Daarom is het een combinatie van deze drie types:
* Houd zowel de vorige als de huidige waarden voor attribuut (als Type 3, Kijk naar kolommen: “HistoricCity”,”CurrentCity”)
* overschrijft alle records voor de huidige versie van attribuut (als Type 1, Kijk naar kolom “CurrentCity”)
* houdt de historische versie van attribuut (als Type 2, Kijk als kolommen: “IsCurrent”,” StartDate”,”EndDate”)
laten we eens kijken hoe de rij wordt gewijzigd en hoe de invloed ervan op DW., De eerste keer laden van de rij:
SCD-Type 6 (stap 1)
Rijen in DW ‘ s tabel Klant na de eerste klant verhuizing:
SCD-Type 6 (stap 2)
Rijen in DW ‘ s tabel Klant een tweede klant verhuizing:
SCD-Type 6 (stap 3)
Welk Type moet ik kiezen?,
als professionele consultant antwoord ik professioneel:
het is afhankelijk
vraag uw business team, business analytics of uw klant: wat ze nodig hebben in data warehouse.
misschien heb ik het niet hard genoeg gezegd, maar in dezelfde tabel kun je verschillende SCD Types toepassen op elke kolom.
bijvoorbeeld: Type 2 in de kolom stad, Type 1 in de kolom geboortedatum. Allemaal in dezelfde tafel.
vraag ze daarom voor elke dimensie:
* welke attributen zijn constant,
* welke attributen zijn variabelen?,
* welke attributen moeten volledig worden bijgehouden, welke moet alleen de vorige en huidige versie behouden?
* hoeveel rijen staan er nu in de tabel / worden de komende 10 jaar verwacht?
bewaar deze antwoorden als bewijs. Mensen, vooral klanten, veranderen graag van gedachten. Je weet wat ik bedoel.
Als u nog steeds niet zeker weet welke u moet kiezen, onthoud dan:
het bijhouden van een geschiedenis van de wijzigingen is goed voor u
omdat de vereisten kunnen veranderen.
naast de types 0 en 1 zijn naar mijn mening de meest populaire Type 2 en Type 4.
hoe gegevens in SCD Laden?,
goede vraag. Maar dit onderwerp is een heel ander verhaal.
voordat ik er de volgende post over voorbereid-neem een kijkje op deze tool:
SCD Merge Wizard
De tool helpt u bij het maken, beheren en onderhouden van mapping tussen brondatabase (bijvoorbeeld staging) en doeldatabase (Data Warehouse). Bovendien, met deze aanpak zul je MERGE statement gebruiken om laadbewerkingen uit te voeren met behulp van geconfigureerde SCD Type voor elke kolom.
In verdere berichten zal ik uitleggen hoe je verschillende SCD Types in deze tool kunt toepassen.
succes met het laden,
Kamil