Данни за измерения, които се променят бавно или непредвидимо, се улавят в анализи на бавно променящите се измерения (SCD). В среда на хранилище за данни таблицата с измерения има първичен ключ, който уникално идентифицира всеки запис и други части от информация, които са известни като данни за измерения.
Всички методи за актуализиране за различните типове SCD се осъществяват с помощта на програмата SortCL в IRI CoSort. В IRI Voracity има съветник, който да помага при създаването на скриптове за задания SCD, използвани при изпълнение на програмата SortCL. Повечето типове SCD използват пълно външно свързване, за да съпоставят записи от оригиналния източник на данни със записи в актуализирания източник въз основа на приравняване на ключ от всеки. Тип 4 обаче извършва актуализацията с помощта на сортиране.
Тип 4 SCD
Моделът тип 4 е подобен на този за тип 2. Разликата е, че има 2 таблици или файлове, които се поддържат:една за текущите разходи и една за съхраняване на хронологията на разходите. Когато нови текущи записи се добавят към главния, тези нови записи обикновено се добавят към историята едновременно.
Дефинициите на полетата са еднакви в актуализацията, историята и главните файлове или таблици. Ще сортираме записите за актуализацията и историята заедно. Ще бъде създаден нов главен код, който има само един запис за всеки ProductCode и този запис ще бъде най-актуалният. Историята ще съдържа всички записи за всеки Код на продукта включително тези от източника на актуализация.
Началната главна таблица ще бъде същата като началната главна таблица от нашия пример за Тип 1 със стойности, както е показано по-долу.
Код на продукта | Разходи | Начална дата |
---|---|---|
C123 | 125,50 | 20110228 |
F112 | 2365,00 | 20120101 |
G101 | 19,25 | 20110930 |
J245 | 450,50 | 20110430 |
S022 | 98,75 | 20110515 |
Всички данни за актуализиране ще имат една и съща начална дата. Източникът update.dat съдържа записи със следните стойности:
Код на продукта | Разходи | Начална дата |
---|---|---|
F112 | 2425,00 | 20120701 |
J245 | 550,50 | 20120701 |
M447 | 101,75 | 20120701 |
S022 | 101,75 | 20120701 |
Източникът на началната история по-долу е като началния главен в Тип 2. Така че Тип 4 е комбинация от Тип 1 и Тип 2, където главният е същият като главен тип 1 и историята е същият като главен тип 2.
Код на продукта | Разходи | Начална дата |
---|---|---|
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 |
В IRI Workbench има съветник за Voracity, който помага при създаването на скриптове за актуализиране на размерни файлове и таблици. Този съветник се намира в падащото меню Прожорливост в лентата за навигация. Първо избирате типа SCD. След това се показва прозорецът, в който избирате източниците, които се използват за обработка на актуализацията.
Следващият екран е мястото, където настройвате сортирането, като избирате клавишите. Има 2 ключа:Код на продукта след това Начална дата . Групираме по Код на продукта , но също така трябва да сортираме в низходящ ред по Начална дата във всеки Код на продукта групиране. Това е така, за да можем да филтрираме най-новия запис за всеки ProductCode група към новия главен.
За да направите Начална дата ключ, който сортира в низходящ ред, изберете този ключ и след това изберете Редактиране на ключ . Това ще изведе следния екран:
В падащото меню за Посока изберете Низходящо .
Ето работния скрипт за сортирането:
/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
По-долу е актуализираният главен код, произведен чрез изпълнение на горния скрипт за работа с помощта на SortCL. Стойностите са същите, които се произвеждат при актуализация от тип 1.
Код на продукта | Разходи | Начална дата |
---|---|---|
C123 | 125,50 | 20110228 |
F112 | 2425,00 | 20120701 |
G101 | 19,25 | 20110930 |
J245 | 550,50 | 20120701 |
M447 | 139,25 | 20120701 |
S022 | 101,75 | 20120701 |
Файлът с историята съдържа всички предишни записи плюс новите записи от файла за актуализиране.
Код на продукта | Разходи | Начална дата |
---|---|---|
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 |