sql >> Databáze >  >> RDS >> Database

SCD typ 1

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 lze provést 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ů používá úplné vnější spojení k porovnání záznamů z původního zdroje dat se záznamy ve zdroji aktualizace na základě ztotožnění klíče z každého z nich. Záznamy se shodami je třeba aktualizovat. Záznamy ve zdroji aktualizací, které nemají shodu, je třeba přidat do hlavního serveru.

Tento článek se zabývá modelem SCD typu 1, kde nové informace z aktualizačních dat přepisují původní informace v hlavním zdroji. Záznamy ve zdroji aktualizací bez shod jsou přidány do nového vzoru. Protože tento model zahrnuje přepisování starých hodnot aktuálními hodnotami a neuchovává žádnou historii, není často používán.

Aktualizace se provádí spojením s ohledem na pole ProductCode. V tomto příkladu budou aktuální data zdrojový soubor master1.dat a update.dat se používá ke změně hodnot nebo přidání záznamů v aktuálním hlavním zdroji.

Zdroj master1.dat obsahuje:

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 tomto případě budou mít všechna data aktualizace 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

Nová rozměrová tabulka bude mít po aktualizaci tyto hodnoty:

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

V IRI Workbench existuje průvodce, 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, kde vyberete soubory, které se použijí pro zpracování aktualizace.

Další obrazovka je pro definování spojení provedeného s hlavním a aktualizačním zdrojem

Níže je uveden skript úlohy sortcl, který se vytvoří při zpracování dvou souborů master1.dat a update.dat:

/INFILE=C:/IRI/CoSort95/workbench.orig/workspace/SCD/SCD1/master1.dat
  /PROCESS=DELIMITED
  /ALIAS=master1
  /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='\"')

/JOIN FULL_OUTER NOT_SORTED master1 NOT_SORTED update WHERE MASTER1.PRODUCTCODE == UPDATE.PRODUCTCODE

/OUTFILE=/master1.dat
# This processes all except the new records
  /PROCESS=DELIMITED
  /FIELD=(MASTER1.PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"')
  /FIELD=(COST_NEW, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"', IF MASTER1.PRODUCTCODE EQ UPDATE.PRODUCTCODE THEN UPDATE.COST ELSE MASTER1.COST)
  /FIELD=(STARTDATE_NEW, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"', IF MASTER1.PRODUCTCODE EQ UPDATE.PRODUCTCODE THEN UPDATE.STARTDATE ELSE MASTER1.STARTDATE)
  /INCLUDE WHERE MASTER1.PRODUCTCODE NE ""
/OUTFILE=master1.dat
# This processes the new records to be added
  /PROCESS=DELIMITED
  /FIELD=(UPDATE.PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"')
  /FIELD=(UPDATE.COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"')
  /FIELD=(UPDATE.STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') I 
  /INCLUDE WHERE MASTER1.PRODUCTCODE EQ ""

  1. Oracle Database Testing Challenge – Porovnejte data schématu

  2. Vyrovnávání zatížení databáze:Distribuované vs centralizované nastavení

  3. Jak nastavit výchozí hodnotu pro existující sloupec

  4. Smazat SQLite