långsamt ändra dimensioner (SCD) – dimensioner som förändras långsamt över tiden, snarare än att förändras på vanligt schema, tidsbas. I datalager finns det ett behov av att spåra ändringar i dimensionsattribut för att kunna rapportera historiska data. Med andra ord bör implementering av en av SCD-typerna göra det möjligt för användare att tilldela rätt dimensions attributvärde för givet datum. Exempel på sådana dimensioner kan vara: kund, geografi, anställd.,
det finns många tillvägagångssätt hur man hanterar SCD. De mest populära är:
- Type 0 – the passive method
- Type 1 – Overwriting the old value
- Type 2-Creating a new additional record
- Type 3-Adding a new column
- Type 4-Using historical table
- Type 6-Combine approaches of types 1,2,3 (1+2+3=6)
typ 0 – den passiva metoden. I denna metod utförs ingen speciell åtgärd vid dimensionella förändringar. Vissa dimensionsdata kan förbli desamma som för första gången infogas, andra kan skrivas över.,
typ 1 – Skriva över det gamla värdet. I denna metod lagras ingen historik över dimensionsändringar i databasen. Det gamla dimensionsvärdet skrivs helt enkelt Över vara det nya. Denna typ är lätt att underhålla och används ofta för data som ändringar orsakas av bearbetning korrigeringar(t.ex. borttagning specialtecken, korrigera stavfel).,
Före förändring:
Customer_ID | Customer_Name | Customer_Type |
---|---|---|
1 | Cust_1 | Företag |
Efter förändringen av:
Customer_ID | Customer_Name | Customer_Type |
---|---|---|
1 | Cust_1 | Retail |
Typ 2 – Skapa ytterligare ett nytt rekord., I denna metodik lagras all historia av dimensionsändringar i databasen. Du tar attributändring genom att lägga till en ny rad med en ny surrogatnyckel i dimensionstabellen. Både de föregående och nya raderna innehåller som attribut den naturliga nyckeln (eller annan hållbar identifierare). Även kolumnerna ”effektivt datum” och ”aktuell indikator” används i denna metod. Det kan bara finnas en post med aktuell indikator inställd på ”Y”. För kolumnerna ”effektivt datum”, dvs. start_date och end_date, är end_date för aktuell post vanligtvis inställt på värde 9999-12-31., Att införa ändringar i dimensionsmodellen i typ 2 kan vara mycket dyrt databasoperation så det rekommenderas inte att använda det i dimensioner där ett nytt attribut kan läggas till i framtiden.,
innan ändringen:
Customer_ID | Customer_Name | Customer_Type | Start_Date | End_Date | Current_Flag |
---|---|---|---|---|---|
1 | cust_1 | corporate | 22-07-2010 | 31-12-9999 | y |
efter ändringen:
typ 3 – Lägga till en ny kolumn. I denna typ hålls vanligtvis endast det aktuella och tidigare värdet av dimensionen i databasen., Det nya värdet laddas in i kolumnen ”current/new” Och den gamla i kolumnen ”old/previous”. Generellt sett är historiken begränsad till antalet kolumner som skapats för att lagra historiska data. Detta är den minst vanliga tekniken.,iv id=”2f5bdb6350″>
efter ändringen:
customer_id | customer_name | current_type | previous_type |
---|---|---|---|
1 | cust_1 | retail | corporate |
type 4 – using historical table., I den här metoden används en separat Historisk tabell för att spåra alla dimensionens attributhistoriska förändringar för var och en av dimensionen. Den’ Huvud ’ dimensionstabellen håller endast de aktuella data t.ex. kund och customer_history tabeller.
Aktuell tabell:
Customer_ID | Customer_Name | Customer_Type |
---|---|---|
1 | Cust_1 | Corporate |
historisk tabell:
typ 6 – kombinera tillvägagångssätt av typer 1,2,3 (1+2+3=6)., I den här typen har vi i dimensionstabellen sådana ytterligare kolumner som:
- current_type – för att hålla aktuellt värde för attributet. Alla historikposter för givna attributobjekt har samma aktuella värde.
- historical_type – för att hålla historiskt värde för attributet. Alla historikposter för givna attributobjekt kan ha olika värden.
- start_date – för att hålla startdatum för ’effektivt datum’ av attributets historia.
- end_date – för att hålla slutdatum för ”effektivt Datum” för attributets historia.,
- current_flag – för att hålla information om den senaste posten.
i den här metoden för att fånga attributändring lägger vi till en ny post som i typ 2. Current_type-informationen skrivs över med den nya som i typ 1. Vi lagrar historien i en historiskkolumn som i typ 3.