Langsomt skiftende dimension

Slowly Changing Dimensions ( SCD) er en mekanisme til sporing af ændringer i dimensionsdata i form af et datavarehus [1] [2] . Det bruges, hvis dataene ikke ændres særlig ofte og ikke efter planen. Et eksempel er geografiske data (placering af et lager, juridisk adresse på en organisation), status for en kunde under et loyalitetsprogram eller afdelingen i en virksomhed, hvor dens medarbejder arbejder [3] .

Der er flere typer SCD [4] .

Skriv 0

Null-typen (SCD0) er en passiv metode, fordi det forventes, at værdierne af attributter af denne type ikke vil ændre sig. Eksempler er datoen for oprettelsen af ​​posten, fødselsdatoen og -stedet, enhedens serienummer [5] .

Eksempel:

Tabel med originale data
Serie og pasnummer Fulde navn Fødselssted
1800 223111 Ivanov Sergey Petrovich Kyzyl

Type 1

Den første type (SCD1) bruger en simpel overskrivning: dataene i tabellen er fuldstændigt erstattet med nye (den mest opdaterede). Historien er fuldstændig tabt, det vil sige, at efter opdateringen er det umuligt at spore kæden af ​​ændringer [6] .

Eksempel:

Surrogatnøglen (registrerings-ID) forbliver den samme. Værdierne i felterne " Position " og " Afdeling " erstattes med nye. Forretningsnøglen (Personalnummer) i dette eksempel ændres ikke, men kan om nødvendigt ændres analogt med andre felter.

Tabel med originale data
Optag ID Personalenummer Fulde navn Jobtitel Afdeling
1026 IB-69420 Ivanov Sergey Petrovich Junior Specialist Afdeling for engrosindkøb
Tabel med opdaterede data
Optag ID Personalenummer Fulde navn Jobtitel Afdeling
1026 IB-69420 Ivanov Sergey Petrovich Chefspecialist Salgsafdeling

Type 2

Den anden type (SCD2) bruger tilføjelsen af ​​en ny række og yderligere kolonner. Denne tilgang bevarer historien.

Derudover kan du tilføje servicekolonner, der kan være ansvarlige for versionering, status og det tidsinterval, hvor disse rækker kan betragtes som relevante.

Eksempel: En surrogatnøgle ( record ID ) oprettes ny. Forretningsnøglen ( Personalenummer ) ændres ikke, hvilket giver dig mulighed for at forbinde den tilføjede linje med den originale [3] .

Tabel med originale data
Optag ID Personalenummer Fulde navn Jobtitel Afdeling
1026 IB-69420 Ivanov Sergey Petrovich Junior Specialist Afdeling for engrosindkøb

Kun linje tilføjet

Den tilføjede række indeholder de nye værdier for felterne " Position " og " Afdeling ".

Tabel med opdaterede data
Optag ID Personalenummer Fulde navn Jobtitel Afdeling
1026 IB-69420 Ivanov Sergey Petrovich Junior Specialist Afdeling for engrosindkøb
1027 IB-69420 Ivanov Sergey Petrovich Chefspecialist Salgsafdeling

Tilføjet række og kolonne med flag

Den tilføjede række indeholder de nye værdier for felterne " Position " og " Afdeling ". Den tilføjede kolonne indeholder status for posten i tabellen. Ud over denne status kan et hvilket som helst andet flag bruges, for eksempel forhandlingsstadiet.

Tabel med opdaterede data
Optag ID Personalenummer Fulde navn Jobtitel Afdeling Status
1026 IB-69420 Ivanov Sergey Petrovich Junior Specialist Afdeling for engrosindkøb FALSK
1027 IB-69420 Ivanov Sergey Petrovich Chefspecialist Salgsafdeling RIGTIGT

Tilføjet række og kolonne med version

Tabel med opdaterede data
Optag ID Personalenummer Fulde navn Jobtitel Afdeling Version
1026 IB-69420 Ivanov Sergey Petrovich Junior Specialist Afdeling for engrosindkøb 0
1027 IB-69420 Ivanov Sergey Petrovich Chefspecialist Salgsafdeling en

Med hver ny ændring vokser versionsnummeret trinvist.

Tilføjet en række og kolonner med et interval

Tabel med opdaterede data
Optag ID Personalenummer Fulde navn Jobtitel Afdeling datoen for begyndelsen udløbsdato
1026 IB-69420 Ivanov Sergey Petrovich Junior Specialist Afdeling for engrosindkøb 2000-01-01T00:00:00 2008-08-08T00:00:00
1027 IB-69420 Ivanov Sergey Petrovich Chefspecialist Salgsafdeling 2008-08-08T00:00:00 NUL

I stedet for NULL i værdien af ​​Slutdato -kolonnen for at angive, at rækken er den mest aktuelle, kan du bruge værdien " 9999-12-31T00:00:00 ".

Slutdatoværdien for den forrige række er den samme som startdatoværdien for den næste række.

Tilføjet en række og kolonner med ikrafttrædelsesdatoen for ændringen

Tabel med opdaterede data
Optag ID Personalenummer Fulde navn Jobtitel Afdeling Ikrafttrædelsesdatoen Status
1026 IB-69420 Ivanov Sergey Petrovich Junior Specialist Afdeling for engrosindkøb 2000-01-01T00:00:00 RIGTIGT
1027 IB-69420 Ivanov Sergey Petrovich Chefspecialist Salgsafdeling 2008-08-08T00:00:00 FALSK

Type 3

Den tredje type (SCD3) bruger tilføjelsen af ​​nye attributkolonner, der gemmer den tidligere værdi for at vedligeholde historikken. Denne type forekommer sjældent i sin rene form [7] og er nødvendig for virksomheder i situationer, hvor det kun er nødvendigt at spore ændringer for specifikke parametre.

Eksempel [8] :

Tabel med originale data
Optag ID Personalenummer Fulde navn Jobtitel Afdeling
1026 IB-69420 Ivanov Sergey Petrovich Junior Specialist Afdeling for engrosindkøb
Tabel med opdaterede data
Optag ID Personalenummer Fulde navn Tidligere stilling Aktuelle position Tidligere afdeling Afdeling Ikrafttrædelsesdatoen
1026 IB-69420 Ivanov Sergey Petrovich Junior Specialist Chefspecialist Afdeling for engrosindkøb Salgsafdeling 2000-01-01T00:00:00

Den tredje type bevarer kun begrænset historicitet (kun op til den tidligere værdi), hvilket gør den mindre meningsfuld end type 2 [9] .

Noter

  1. Rainardi, 2007 , s. elleve.
  2. Safronchik, 2015 , s. 38-39.
  3. 1 2 Beryoza, 2015 , s. 179.
  4. Kimball, 2002 , s. 97-100.
  5. Ross, 2013 , s. 179.
  6. Berger, 2007 , s. 367-368.
  7. Haselden, 2006 , pp. 511.
  8. Ballard, 2012 , s. 159-160.
  9. SAS Institute, 2011 , pp. 461.

Litteratur

Se også