Dane wymiarowe, które zmieniają się powoli lub nieprzewidywalnie, są rejestrowane w analizach wolno zmieniających się wymiarów (SCD). W środowisku hurtowni danych tabela wymiarów ma klucz podstawowy, który jednoznacznie identyfikuje każdy rekord i inne informacje znane jako dane wymiarowe.
Wszystkie metody aktualizacji dla różnych typów SCD są realizowane za pomocą programu SortCL w IRI CoSort. W IRI Voracity dostępny jest kreator, który pomaga w tworzeniu skryptów zadań SCD używanych podczas uruchamiania programu SortCL. Większość typów SCD używa pełnego sprzężenia zewnętrznego w celu dopasowania rekordów z oryginalnego źródła danych do rekordów w zaktualizowanym źródle na podstawie zrównania klucza z każdego z nich. Jednak typ 4 dokonuje aktualizacji za pomocą sortowania.
Typ 4 SCD
Model Typu 4 jest podobny do modelu Typu 2. Różnica polega na tym, że są utrzymywane 2 tabele lub pliki:jedna dla bieżących kosztów i jedna do przechowywania rekordów historii dla kosztów. Kiedy nowe aktualne rekordy są dodawane do wzorca, te nowe rekordy są zwykle dodawane do historii w tym samym czasie.
Definicje pól są takie same w aktualizacji, historii i plikach głównych lub tabelach. Posortujemy rekordy dla aktualizacji i historii razem. Zostanie utworzony nowy wzorzec, który będzie miał tylko jeden rekord dla każdego kodu produktu i ten rekord będzie najbardziej aktualny. Historia będzie zawierała wszystkie rekordy dla każdego kodu produktu w tym te ze źródła aktualizacji.
Początkowa tabela wzorcowa będzie taka sama, jak początkowa tabela wzorcowa z naszego przykładu Typu 1 z wartościami przedstawionymi poniżej.
Kod produktu | Koszt | Data rozpoczęcia |
---|---|---|
C123 | 125,50 | 20110228 |
F112 | 2365,00 | 20120101 |
G101 | 19,25 | 20110930 |
J245 | 450,50 | 20110430 |
S022 | 98,75 | 20110515 |
Wszystkie dane aktualizacji będą miały tę samą datę rozpoczęcia. Źródło update.dat zawiera rekordy o następujących wartościach:
Kod produktu | Koszt | Data rozpoczęcia |
---|---|---|
F112 | 2425,00 | 20120701 |
J245 | 550,50 | 20120701 |
M447 | 101,75 | 20120701 |
S022 | 101,75 | 20120701 |
Poniższe źródło historii początkowej jest podobne do początkowego wzorca w Typie 2. Tak więc Typ 4 jest kombinacją Typu 1 i Typu 2, gdzie wzorzec jest taki sam jak wzorzec Typu 1, a historia jest taka sama, jak w przypadku wzorca Typu 2.
Kod produktu | Koszt | Data rozpoczęcia |
---|---|---|
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 |
W IRI Workbench dostępny jest kreator Voracity, który pomaga w tworzeniu skryptów do aktualizacji plików i tabel Dimensional. Ten kreator znajduje się w menu rozwijanym Wolność na pasku nawigacyjnym. Najpierw wybierasz typ SCD. Następnie zostanie wyświetlone okno, w którym wybierasz źródła używane do przetwarzania aktualizacji.
Na następnym ekranie możesz ustawić sortowanie, wybierając klawisze. Istnieją 2 klucze:Kod produktu następnie Data rozpoczęcia . Grupujemy według kodu produktu , ale musimy też posortować w porządku malejącym według Data rozpoczęcia w każdym Kodzie Produktu grupowanie. Dzieje się tak, abyśmy mogli filtrować najnowszy rekord dla każdego kodu produktu pogrupuj do nowego wzorca.
Aby ustawić datę rozpoczęcia klucz, który sortuje w kolejności malejącej, wybierz ten klucz, a następnie wybierz Edytuj klucz . Spowoduje to wyświetlenie następującego ekranu:
W menu Kierunek wybierz Malejąc .
Oto skrypt pracy dla tego rodzaju:
/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
Poniżej znajduje się zaktualizowany wzorzec utworzony przez uruchomienie powyższego skryptu zadania przy użyciu SortCL. Wartości są takie same, jak w przypadku aktualizacji typu 1.
Kod produktu | Koszt | Data rozpoczęcia |
---|---|---|
C123 | 125,50 | 20110228 |
F112 | 2425,00 | 20120701 |
G101 | 19,25 | 20110930 |
J245 | 550,50 | 20120701 |
M447 | 139,25 | 20120701 |
S022 | 101,75 | 20120701 |
Plik historii zawiera wszystkie poprzednie rekordy oraz nowe rekordy z pliku aktualizacji.
Kod produktu | Koszt | Data rozpoczęcia |
---|---|---|
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 |