pondělí 23. února 2009

ODI a Slowly Changing Dimension (Pomalu se měnící dimenze)

Potřebujete-li v projektu řešit „Pomalu se měnící dimenze“ (Slowly Changing Dimension) druhého typu, pak můžete využít nativní funkcionalitu ODI spolu s Knowledge Moduly pro SCD:
  • IKM Oracle Slowly Changing Dimension
  • IKM Teradata Slowly Changing Dimension
  • IKM DB2 400 Slowly Changing Dimension
  • IKM DB2 UDB Slowly Changing Dimension
  • IKM MSSQL Slowly Changing Dimension
  • IKM Sybase ASE Slowly Changing Dimension
  • IKM Sybase IQ Slowly Changing Dimension
  • ...

Jak využít „IKM Oracle Slowly Changing Dimension“

1/ Do stávajícího/nového projektu naimportujte Knowledge Modul „IKM Oracle Slowly Changing Dimension“, podrobnosti jak vytvořit projekt a nahrát KM najdete zde.

2/ V „IKM Oracle Slowly Changing Dimension“ verze 4.0 z DEC-2004 je potřeba v kroku „252 Historize old rows“ vypnout volbu „Jurnalize table in the Stage area“


3/ Do Modelu naimportujte Vaší stávající cílovou dimenzi (jak na to viz. zde) nebo ji v ODI manuálně založte a nechte vytvořit v databázi (jak na to viz. zde)

Dimenze musí mít povinné sloupce, které určují: PK dimenze, PK zdroje, Označení aktuálnosti záznamu, Datum od a Datum do kdy záznam platí, příklad:


4/ Každý sloupec cílové dimenze je potřeba označit SCD příznakem, který určuje jeho chování. K dispozici je označení jako:


  • Surrogate Key – klíč cílové dimenze
  • Natural Key – klíč zdrojového záznamu
  • Overwrite on Change – při změně hodnoty sloupce dojde pouze k přepsání staré hodnoty na novou
  • Add Row on Change – při změně hodnoty sloupce dojde k ukončení platnosti stávajícího záznamu a k založení nového platného záznamu
  • Current Record Flag – označení aktuálního a předcházejícího záznamu
  • Starting Timestamp – datum platnosti od
  • Ending Timestamp – datum platnosti do

Postupně vyberte jednotlivé sloupce dimenze a na záložce Description jim nastavte chování v rámci SCD.


V mém případě:
  • Surrogate Key = PK_DIM_ACC
  • Natural Key = PK_SOURCE
  • Overwrite on Change = DESCRIPTIONS
  • Add Row on Change = NAME
  • Current Record Flag = CURREC_FLG
  • Starting Timestamp = DATE_FROM
  • Ending Timestamp = DATE_TO
5/ V Projektu založte nový Interface a vytvořte mapování/transformace mezi zdrojem a cílovou dimenzí. Jak založit Integrace a provádět mapování najdete zde.

  • Surrogate Key (Primární klíč dimenze) namapujte na databázovou sequenci (musí existovat v db – tj. musíte ji manuálně založit), provádění transformace změňte na „Target“ a odškrtněte volbu „Check Not Null“ (podrobnosti viz. popis pro Knowledge Modul)
  • Current Record Flag nastavte na konstantu 1
  • Starting Timestamp nastavte na SYSDATE
  • Ending Timestamp nastavte na to_date('1.1.2400','dd.mm.yyyy')

6/ Na záložce „Flow“ klikněte na oblast „Target+Staging“, vyberte IKM Oracle Slowly Changing Dimension a nastavte volbu „No“ pro FLOW_CONTROL (podrobnosti viz. popis pro Knowledge Modul).


7/ Na záložce „Controls“ vypněte kontrolu datové kvality pro Primární klíč.



Spuštění

I. Spusťte Interface a zkontrolujte výsledek


II. Po prvním spuštění se naplní cílová dimenze stejným obsahem jako jsou zdrojová data. Veškeré záznamy budou mít přidělené vlastní PK + identifikační PK zdroje, všechny záznamy jsou aktuální (CURREC_FLG=1) s platností od „teď“ do 1.1.2400.


III. Pozměňte data na zdroji


IV. Opět spusťte Interface a zkontrolujte výsledek


V. Po druhém spuštění došlo:
  1. ukončila se platnost záznamu s NAME=205011 (PK_SOURCE=1, PK_DIM_ACC=241, CURREC_FLG=0 a DATE_TO je ukončen na „teď“), místo toho byl založen nový záznam s NAME=2050111 (PK_SOURCE=1 ale PK_DIM_ACC=261, CURREC_FLG=1 a DATE_TO je 1.1.2400)
  2. změnil se popis u záznamu s NAME=205014
  3. vznikl nový záznam s NAME=205066
  4. a záznam s NAME=205012, který na zdroji zanikl, stále existuje



Erik Eckhardt.

Žádné komentáře: