Sakta förändras dimension

Slowly Changing Dimensions ( SCD) är en mekanism för att spåra förändringar i dimensionsdata i termer av ett datalager [1] [2] . Det används om data inte ändras särskilt ofta och inte enligt schemat. Ett exempel är geografiska data (lokalisering av ett lager, juridisk adress för en organisation), status för en kund under ett lojalitetsprogram eller avdelningen på ett företag där dess anställda arbetar [3] .

Det finns flera typer av SCD [4] .

Skriv 0

Nolltypen (SCD0) är en passiv metod eftersom det förväntas att värdena för attribut av denna typ inte kommer att ändras. Exempel är datum då posten skapades, födelsedatum och födelseort, enhetens serienummer [5] .

Exempel:

Tabell med originaldata
Serie och passnummer Fullständiga namn Födelseort
1800 223111 Ivanov Sergey Petrovich Kyzyl

Typ 1

Den första typen (SCD1) använder en enkel överskrivning: data i tabellen ersätts helt med nya (den mest uppdaterade). Historien är helt förlorad, det vill säga efter uppdateringen är det omöjligt att spåra förändringskedjan [6] .

Exempel:

Surrogatnyckeln (post-ID) förblir densamma. Värdena i fälten " Position " och " Avdelning " ersätts med nya. Affärsnyckeln (personalnummer) i detta exempel ändras inte, men kan ändras vid behov, analogt med andra fält.

Tabell med originaldata
Record ID Personalnummer Fullständiga namn Jobbtitel Avdelning
1026 IB-69420 Ivanov Sergey Petrovich Juniorspecialist Institutionen för grossistköp
Tabell med uppdaterad data
Record ID Personalnummer Fullständiga namn Jobbtitel Avdelning
1026 IB-69420 Ivanov Sergey Petrovich Chefsspecialist Säljavdelning

Typ 2

Den andra typen (SCD2) använder tillägg av en ny rad och extra kolumner. Detta tillvägagångssätt bevarar historien.

Dessutom kan du lägga till tjänstkolumner som kan ansvara för versionering, status och tidsintervallet under vilket dessa rader kan anses relevanta.

Exempel: En surrogatnyckel ( post-ID ) skapas ny. Affärsnyckeln ( Personalnummer ) ändras inte, vilket gör att du kan länka den tillagda raden med den ursprungliga [3] .

Tabell med originaldata
Record ID Personalnummer Fullständiga namn Jobbtitel Avdelning
1026 IB-69420 Ivanov Sergey Petrovich Juniorspecialist Institutionen för grossistköp

Endast rad tillagd

Den tillagda raden innehåller de nya värdena för fälten " Position " och " Department ".

Tabell med uppdaterad data
Record ID Personalnummer Fullständiga namn Jobbtitel Avdelning
1026 IB-69420 Ivanov Sergey Petrovich Juniorspecialist Institutionen för grossistköp
1027 IB-69420 Ivanov Sergey Petrovich Chefsspecialist Säljavdelning

Lade till rad och kolumn med flagga

Den tillagda raden innehåller de nya värdena för fälten " Position " och " Department ". Den tillagda kolumnen innehåller statusen för posten i tabellen. Utöver denna status kan vilken annan flagga som helst användas, till exempel förhandlingsstadiet.

Tabell med uppdaterad data
Record ID Personalnummer Fullständiga namn Jobbtitel Avdelning Status
1026 IB-69420 Ivanov Sergey Petrovich Juniorspecialist Institutionen för grossistköp FALSK
1027 IB-69420 Ivanov Sergey Petrovich Chefsspecialist Säljavdelning SANN

Lade till rad och kolumn med version

Tabell med uppdaterad data
Record ID Personalnummer Fullständiga namn Jobbtitel Avdelning Version
1026 IB-69420 Ivanov Sergey Petrovich Juniorspecialist Institutionen för grossistköp 0
1027 IB-69420 Ivanov Sergey Petrovich Chefsspecialist Säljavdelning ett

Med varje ny ändring växer versionsnumret stegvis.

Lade till en rad och kolumner med ett intervall

Tabell med uppdaterad data
Record ID Personalnummer Fullständiga namn Jobbtitel Avdelning datumet för början utgångsdatum
1026 IB-69420 Ivanov Sergey Petrovich Juniorspecialist Institutionen för grossistköp 2000-01-01T00:00:00 2008-08-08T00:00:00
1027 IB-69420 Ivanov Sergey Petrovich Chefsspecialist Säljavdelning 2008-08-08T00:00:00 NULL

Istället för NULL i värdet i kolumnen Slutdatum för att indikera att raden är den mest aktuella kan du använda värdet " 9999-12-31T00:00:00 ".

Slutdatumvärdet för föregående rad är detsamma som startdatumvärdet för nästa rad.

Lade till en rad och kolumner med ändringsdatumet

Tabell med uppdaterad data
Record ID Personalnummer Fullständiga namn Jobbtitel Avdelning Ikraftträdande datum Status
1026 IB-69420 Ivanov Sergey Petrovich Juniorspecialist Institutionen för grossistköp 2000-01-01T00:00:00 SANN
1027 IB-69420 Ivanov Sergey Petrovich Chefsspecialist Säljavdelning 2008-08-08T00:00:00 FALSK

Typ 3

Den tredje typen (SCD3) använder tillägg av nya attributkolumner som lagrar det tidigare värdet för att upprätthålla historik. Denna typ förekommer sällan i sin rena form [7] , och behövs av företag för situationer där det är nödvändigt att spåra ändringar endast för specifika parametrar.

Exempel [8] :

Tabell med originaldata
Record ID Personalnummer Fullständiga namn Jobbtitel Avdelning
1026 IB-69420 Ivanov Sergey Petrovich Juniorspecialist Institutionen för grossistköp
Tabell med uppdaterad data
Record ID Personalnummer Fullständiga namn Tidigare befattning Nuvarande position Tidigare avdelning Avdelning Ikraftträdande datum
1026 IB-69420 Ivanov Sergey Petrovich Juniorspecialist Chefsspecialist Institutionen för grossistköp Säljavdelning 2000-01-01T00:00:00

Den tredje typen behåller endast begränsad historicitet (endast upp till det tidigare värdet), vilket gör den mindre meningsfull än typ 2 [9] .

Anteckningar

  1. Rainardi, 2007 , s. elva.
  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 , s. 511.
  8. Ballard, 2012 , s. 159-160.
  9. SAS Institute, 2011 , s. 461.

Litteratur

Se även