Rozměrová data, která se mění pomalu nebo nepředvídatelně, jsou zachycena v analýzách Slowly Changing Dimensions (SCD). V prostředí datového skladu má tabulka dimenzí primární klíč, který jednoznačně identifikuje každý záznam a další informace, které jsou známé jako dimenzionální data.
Všechny metody aktualizace pro různé typy SCD se provádějí pomocí programu SortCL v IRI CoSort. V IRI Voracity existuje průvodce, který pomáhá při vytváření skriptů úloh SCD používaných při spouštění programu SortCL. Většina typů SCD používá úplné vnější spojení k porovnání záznamů z původního zdroje dat se záznamy v aktualizovaném zdroji na základě ztotožnění klíče z každého z nich. Typ 4 však provede aktualizaci pomocí řazení.
SCD typu 4
Model typu 4 je podobný modelu typu 2. Rozdíl je v tom, že jsou udržovány 2 tabulky nebo soubory:jedna pro aktuální náklady a jedna pro uchovávání záznamů historie pro náklady. Když jsou nové aktuální záznamy přidány do hlavního serveru, tyto nové záznamy jsou obvykle přidány do historie ve stejnou dobu.
Definice polí jsou stejné v aktualizaci, historii a hlavních souborech nebo tabulkách. Záznamy pro aktualizaci a historii seřadíme společně. Bude vytvořen nový hlavní server, který bude mít pouze jeden záznam pro každý ProductCode a ten záznam bude nejaktuálnější. Historie bude obsahovat všechny záznamy pro každý Kód produktu včetně těch ze zdroje aktualizací.
Počáteční hlavní tabulka bude stejná jako výchozí hlavní tabulka z našeho příkladu typu 1 s hodnotami, jak je uvedeno níže.
Kód produktu | Cena | Datum zahájení |
---|---|---|
C123 | 125,50 | 20110228 |
F112 | 2365,00 | 20120101 |
G101 | 19:25 | 20110930 |
J245 | 450,50 | 20110430 |
S022 | 98,75 | 20110515 |
Všechna data aktualizace budou mít stejné počáteční datum. Zdroj update.dat obsahuje záznamy s následujícími hodnotami:
Kód produktu | Cena | Datum zahájení |
---|---|---|
F112 | 2425,00 | 20120701 |
J245 | 550,50 | 20120701 |
M447 | 101,75 | 20120701 |
S022 | 101,75 | 20120701 |
Počáteční zdroj historie níže je jako počáteční master u Typu 2. Typ 4 je tedy kombinací typu 1 a typu 2, kde master je stejný jako master typu 1 a historie je stejná jako master typu 2.
Kód produktu | Cena | Datum zahájení |
---|---|---|
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 |
V IRI Workbench je průvodce Voracity, který pomáhá při vytváření skriptů pro aktualizaci Dimensional souborů a tabulek. Tento průvodce se nachází v rozevíracím seznamu Voracity na navigační liště. Nejprve vyberte typ SCD. Poté se zobrazí okno, ve kterém vyberete zdroje, které se používají pro zpracování aktualizace.
Na další obrazovce nastavíte řazení výběrem kláves. Existují 2 klíče:Kód produktu poté Datum zahájení . Seskupujeme podle Kódu produktu , ale musíme také řadit v sestupném pořadí podle Datum zahájení v každém kódu produktu seskupení. Je to proto, abychom mohli filtrovat nejnovější záznam pro každý ProductCode seskupit do nového hlavního serveru.
Chcete-li nastavit Datum zahájení klíč, který se řadí v sestupném pořadí, vyberte tento klíč a poté vyberte Upravit klíč . Zobrazí se následující obrazovka:
V rozbalovací nabídce Směr vyberte Sestupně .
Zde je skript úlohy pro řazení:
/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
Níže je aktualizovaná předloha vytvořená spuštěním výše uvedeného skriptu úlohy pomocí SortCL. Hodnoty jsou stejné jako v aktualizaci typu 1.
Kód produktu | Cena | Datum zahájení |
---|---|---|
C123 | 125,50 | 20110228 |
F112 | 2425,00 | 20120701 |
G101 | 19:25 | 20110930 |
J245 | 550,50 | 20120701 |
M447 | 139,25 | 20120701 |
S022 | 101,75 | 20120701 |
Soubor historie obsahuje všechny předchozí záznamy plus nové záznamy z aktualizačního souboru.
Kód produktu | Cena | Datum zahájení |
---|---|---|
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 |