Dimensionsdata, der ændrer sig langsomt eller uforudsigeligt, fanges i Slowly Changing Dimensions (SCD) analyser. I et datavarehusmiljø har en dimensionstabel en primær nøgle, der unikt identificerer hver post og andre oplysninger, der er kendt som dimensionsdata.
Alle opdateringsmetoderne for de forskellige SCD-typer udføres ved hjælp af SortCL-programmet i IRI CoSort. I IRI Voracity er der en guide til at hjælpe med at skabe de SCD-jobscripts, der bruges ved kørsel af SortCL-programmet. De fleste SCD-typer bruger en fuld ydre joinforbindelse til at matche poster fra den originale datakilde med poster i den opdaterede kilde baseret på at sidestille en nøgle fra hver. Type 4 udfører dog opdateringen ved hjælp af en sortering.
Type 4 SCD
Type 4-modellen ligner den for Type 2. Forskellen er, at der er 2 tabeller eller filer, der vedligeholdes:en for de aktuelle omkostninger og en til at opbevare historikregistreringerne for omkostningerne. Når nye aktuelle poster føjes til masteren, tilføjes disse nye poster normalt til historikken på samme tid.
Feltdefinitionerne er de samme i opdateringen, historikken og masterfilerne eller tabellerne. Vi sorterer optegnelserne for opdateringen og historikken sammen. En ny master vil blive oprettet, som kun har én post for hver Produktkode og den rekord vil være den mest aktuelle. Historikken vil have alle poster for hver Produktkode inklusive dem fra opdateringskilden.
Startmastertabellen vil være den samme som startmaster fra vores eksempel på Type 1 med værdier som vist nedenfor.
Produktkode | Omkostninger | Startdato |
---|---|---|
C123 | 125,50 | 20110228 |
F112 | 2365.00 | 20120101 |
G101 | 19.25 | 20110930 |
J245 | 450,50 | 20110430 |
S022 | 98,75 | 20110515 |
Alle opdateringsdata vil alle have den samme startdato. Update.dat-kilden indeholder poster med følgende værdier:
Produktkode | Omkostninger | Startdato |
---|---|---|
F112 | 2425.00 | 20120701 |
J245 | 550,50 | 20120701 |
M447 | 101,75 | 20120701 |
S022 | 101,75 | 20120701 |
Kilden til starthistorikken nedenfor er som startmesteren i Type 2. Så Type 4 er en kombination af Type 1 og Type 2, hvor masteren er den samme som en Type 1 master, og historikken er den samme som en Type 2 master.
Produktkode | Omkostninger | Startdato |
---|---|---|
C123 | 125,50 | 20110228 |
F112 | 2365.00 | 20120101 |
G101 | 19.25 | 20110930 |
G101 | 21.25 | 20110501 |
J245 | 450,50 | 20110430 |
J245 | 425.25 | 20101001 |
J245 | 385.25 | 20100215 |
S022 | 98,75 | 20110515 |
I IRI Workbench er der en Voracity-guide til at hjælpe med oprettelsen af scripts til opdatering af dimensionsfiler og tabeller. Denne guide er placeret i rullemenuen Voracity på navigationslinjen. Først vælger du SCD-typen. Derefter vises vinduet, hvor du vælger de kilder, der skal bruges til at behandle opdateringen.
Næste skærmbillede er, hvor du opsætter sorteringen ved at vælge tasterne. Der er 2 nøgler:Produktkode derefter Startdato . Vi grupperer efter Produktkode , men vi skal også sortere i faldende rækkefølge efter Startdato inden for hver Produktkode gruppering. Dette er for at vi kan filtrere den seneste post for hver Produktkode gruppe til den nye master.
For at lave Startdato en nøgle, der sorterer i faldende rækkefølge, vælg den nøgle og vælg derefter Rediger nøgle . Dette viser følgende skærmbillede:
I rullemenuen for Retning vælg Faldende .
Her er jobscriptet for den slags:
/INFILE=C:/IRI/CoSort95/workbench.orig/workspace/SCD/SCD4/history4.dat /PROCESS=DELIMITED /ALIAS=history4 /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"') /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') /INFILE=C:/IRI/CoSort95/workbench.orig/workspace/SCD/update.dat /PROCESS=DELIMITED /ALIAS=update /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"') /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') /SORT /KEY=(PRODUCTCODE, TYPE=ASCII) /KEY=(STARTDATE, DESCENDING, TYPE=ASCII) /OUTFILE=history4.dat # This file will contain all the records from both inputs /PROCESS=DELIMITED /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"') /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') /OUTFILE=master4.dat # Include only one record for each ProductCode /PROCESS=DELIMITED /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"') /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') /INCLUDE WHERE PRODUCTCODE
Nedenfor er den opdaterede master produceret ved at køre ovenstående jobscript ved hjælp af SortCL. Værdierne er de samme, som produceres i en Type 1-opdatering.
Produktkode | Omkostninger | Startdato |
---|---|---|
C123 | 125,50 | 20110228 |
F112 | 2425.00 | 20120701 |
G101 | 19.25 | 20110930 |
J245 | 550,50 | 20120701 |
M447 | 139,25 | 20120701 |
S022 | 101,75 | 20120701 |
Historiefilen indeholder alle tidligere poster plus de nye poster fra opdateringsfilen.
Produktkode | Omkostninger | Startdato |
---|---|---|
C123 | 125,50 | 20110228 |
F112 | 2425.00 | 20120701 |
F112 | 2365.00 | 20120101 |
G101 | 19.25 | 20110930 |
G101 | 21.25 | 20110501 |
J245 | 550,50 | 20120701 |
J245 | 450,50 | 20110430 |
J245 | 425.25 | 20101001 |
J245 | 385.25 | 20100215 |
M447 | 101,75 | 220120701 |
S022 | 101,75 | 20120701 |
S022 | 98,75 | 20110515 |