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] .
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:
Serie och passnummer | Fullständiga namn | Födelseort |
---|---|---|
1800 223111 | Ivanov Sergey Petrovich | Kyzyl |
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.
Record ID | Personalnummer | Fullständiga namn | Jobbtitel | Avdelning |
---|---|---|---|---|
1026 | IB-69420 | Ivanov Sergey Petrovich | Juniorspecialist | Institutionen för grossistköp |
Record ID | Personalnummer | Fullständiga namn | Jobbtitel | Avdelning |
---|---|---|---|---|
1026 | IB-69420 | Ivanov Sergey Petrovich | Chefsspecialist | Säljavdelning |
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] .
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 ".
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.
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
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
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
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 |
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] :
Record ID | Personalnummer | Fullständiga namn | Jobbtitel | Avdelning |
---|---|---|---|---|
1026 | IB-69420 | Ivanov Sergey Petrovich | Juniorspecialist | Institutionen för grossistköp |
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] .
Datalagring | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ||||||||||||||
| ||||||||||||||
| ||||||||||||||
Kategori |