SCD - Typ 1SCD - Typ 3 i 4

SCD Typu 2

W modelu wolno zmieniających się wymiarów typu 2 (SCD Type 2) kompletna historia zmian jest przechowywana w bazie danych. Wraz z kolejną zmianą jakiegokolwiek z wymiarów, tworzony jest dodatkowy rekord w tabeli wymiarów. W tym modelu tabela bazy danych zawiera przeważnie pola 'data efektywna' i 'rekord bieżący', za pomocą których można w łatwy sposób śledzić historię zmian.

Implementacja SCD 2 w Datastage

Job opisany i przedstawiony poniżej pokazuje jak zaimplementować wolno zmieniające się wymiary typu 2 (SCD Type 2) w Datastage. Jest to jedna z wielu możliwych architektur pozwalających na zaimplementowanie tego zagadnienia. Poniższy przykład bazuje na jobie ładującym klientów do hurtowni danych.

Tabela wymiarów D_CUSTOMER przed ładowaniem
CUST_ID CUST_
NAME
CUST_
GROUP_ID
CUST_
TYPE_ID
CUST_
COUNTRY_ID
REC_
VERSION
REC_
EFFDT
REC_
CURRENT_IND
DRBOUA7 Dream Basket EL S PL 1 2006-10-01 Y
ETIMAA5 ETL tools info BI C FI 1 2006-09-29 Y
FAMMFA0 Fajatso FD S CD 1 2006-09-27 Y
FICILA0 First Pactonic FD C IT 1 2006-09-25 Y
FRDXXA2 Frasir EL C SK 1 2006-09-23 Y
GAMOPA9 Ganpa LTD. FD C US 1 2006-09-21 Y
GGMOPA9 GG electronics EL S RU 1 2006-09-19 Y
GLMFIA6 Glasithklini FD S PL 1 2006-09-17 Y
GLMPEA9 Globiteleco TC S FI 1 2006-09-15 Y
GONDWA5 Goli Airlines BN S GB 1 2006-09-13 Y


SCD2 architektura
 SCD2 architektura

Najciekawsze elementy joba CUST_SCD2:
  • W naszym przykładzie tabela wymiarów z danymi o klientach jest codziennie odświeżana i jednym ze źródeł zasilających ją jest ekstrakt, który ma postać pliku płaskiego. W przykładzie klient o wartości CUST_ID=ETIMAA5 różni się od tego, który przechowywany jest w bazie danych i jest to jedyny rekord ze zmienionymi danymi. Ekstrakt ma następującą strukturę:
    SCD 2 – ekstrakt dane klientow :
    SCD 2 – ekstrakt dane klientow

  • Plik haszowany (Hash_NewCust) wyszukuje i łączy dane pochodzące z pliku tekstowego
  • Transformer T001_Lookups znajduje dane w pliku hash i mapuje nową i starą wartość do oddzielnych kolumn.
    SCD 2 transformer wyszukiwanie
    SCD 2 transformer wyszukiwanie
  • W transformerze T002_Check_Discrepacies_exist stare i nowe wartości są porównywane i z transformera wychodzą tylko te dane, które się różnią.
    SCD 2 transformer identyfikacja roznic
    SCD 2 transformer identyfikacja roznic
  • Transformer T003 zarządza aktualizacją danych w bazie danych (dokonywany jest UPDATE lub INSERT). W starym rekordzie flaga ‘current indictator‘ czyli ‘rekord bieżący’ zostaje ustawiona na ‘no’, natomiast nowy rekord od tej pory jest bieżący czyli flaga ‘current indicator’ jest ustawiona na no. Dodatkowo, wersja nowego rekordu zostaje zwiększona o 1 oraz ustawiona data bieżąca.
    SCD 2 insert-update
    SCD 2 insert-update
  • Aktualnizacja bazy danych odbywa się poprzez ODBC Update stage (O_DW_Customers_SCD2_Upd) – wybrana akcja 'Update existing rows only' oraz wybrane zostają kolumny kluczowe CUST_ID i REC_VERSION . Spowoduje to pojawienie się tych kolumn w części where zbudowanego automatycznie polecenia SQL.
  • ODBC Insert stage (O_DW_Customers_SCD2_Ins) – wybrana akcja 'insert rows without clearing' oraz kluczowa kolumna CUST_ID.

    Tabela wymiarów D_CUSTOMER po uaktualnieniu Hurtowni Danych
    CUST_ID CUST_
    NAME
    CUST_
    GROUP_ID
    CUST_
    TYPE_ID
    CUST_
    COUNTRY_ID
    REC_
    VERSION
    REC_
    EFFDT
    REC_
    CURRENT_IND
    DRBOUA7 Dream Basket EL S PL 1 2006-10-01 Y
    ETIMAA5 ETL tools info BI C FI 1 2006-09-29 N
    FAMMFA0 Fajatso FD S CD 1 2006-09-27 Y
    FICILA0 First Pactonic FD C IT 1 2006-09-25 Y
    FRDXXA2 Frasir EL C SK 1 2006-09-23 Y
    GAMOPA9 Ganpa LTD. FD C US 1 2006-09-21 Y
    GGMOPA9 GG electronics EL S RU 1 2006-09-19 Y
    GLMFIA6 Glasithklini FD S PL 1 2006-09-17 Y
    GLMPEA9 Globiteleco TC S FI 1 2006-09-15 Y
    GONDWA5 Goli Airlines BN S GB 1 2006-09-13 Y
    ETIMAA5 ETL-Tools.info BI C ES 2 2006-12-02 Y