Zum Hauptinhalt springen

Anwendung der SCD-Methodik durch den ODI 12

Part 1: Anpassung der Gültigkeit des Datensatzes

Wie im vorherigen Blogeintrag dargestellt, bietet der Oracle Data Integrator (ODI) eine eingebaute Lösung, um Daten mit der SCD-Methodik (Slowly Changing Dimension) zu historisieren. Bei näherer Betrachtung und der praktischen Beladung einer Integrationsmenge in eine Zieltabelle mithilfe des Integration Knowledge Modules (IKM) SCD fällt auf, dass der ODI gewisse "Default Values" für das Gültigkeitsende des Datensatzes verwendet. Dies kann im folgenden Szenario veranschaulicht werden:

stage-dim-test

Aus der Staging-Tabelle STAGE_TEST_SCD werden Daten in die Dimensionstabelle DIM_TEST_SCD geschrieben.

Ausgangssituation

Um die Ausgangssituation leichter nachzuvollziehen, wird in den folgenden Testcases beschrieben, wie die Funktionen dargestellt werden können.

Testcase 1: Initiale Beladung von 3 Datensätzen zum 05.05.2017


initiale-beladung-von-3-datensaetzen-2

 

In der Staging-Tabelle sind drei Datensätze angekommen, die in die leere Tabelle DIM_TEST_SCD per IKM SCD geschrieben werden sollen.

 

staging-tabelle-1

 

initiale-beladung-von-3-datensätzen

 

Wie im Ergebnis zu sehen ist, wird die Gültigkeit des Datensatzes vom IKM serienmäßig auf den 01.01.2400 gesetzt, um eine unendliche Gültigkeit darzustellen.

Testcase 2: Beladung von 3 Datensätzen zum 06.05.2017

 

initiale-beladung-von-3-datensätzen

 

Nun liefert die Staging-Tabelle Änderungen. Der Datensatz mit NK = 1 bleibt unverändert (ATTR), bei NK = 2 wurde ATTR auf "C" geändert, NK = 3 wird nicht mehr geliefert, und NK = 4 ist neu hinzugekommen.

 

initiale-beladung-von-5-datensätzen

 

Im Falle einer Änderung wird der ursprüngliche Satz in seiner Gültigkeit terminiert und ein neuer Datensatz mit unendlicher Gültigkeit eingefügt. Wie in diesem Beispiel zu sehen ist, wird im Falle der Terminierung die Gültigkeit des Datensatzes auf den gleichen Wert gesetzt wie der Gültigkeitsbeginn beim Einfügen eines Datensatzes.

Anpassung der Gültigkeit des Datensatzes

Wie aus den Beispielen deutlich geworden ist, fügt das IKM SCD serienmäßig für die unendliche Gültigkeit den 01.01.2400 und für die Terminierung eines Datensatzes das Ladedatum ein. In vielen Situationen kann es jedoch gewünscht sein, dass für die unendliche Gültigkeit ein eigens definierter Wert eingefügt oder im Falle der Terminierung die Gültigkeit des Datensatzes auf "Ladedatum - 1" gesetzt wird.

Damit die Gültigkeit des Datensatzes auf die gewünschten Werte gesetzt wird, sind kleinere Anpassungen im IKM SCD durchzuführen. Für unser Beispiel nehmen wir an, dass das Datum für die unendliche Gültigkeit auf den 31.12.9999 und das Datum bei einem zu terminierenden Satz auf "Ladedatum - 1" gesetzt wird. Im ODI können die IKM im Designer-Tab unter dem entsprechenden Projektfolder durch einen Doppelklick geöffnet und editiert werden. Unter dem Reiter "Tasks" lassen sich die folgenden Tasks identifizieren, die für die gewünschten Änderungen angepasst werden müssen:


staging-tabelle

 

Bei den Tasks in den grünen Kästchen wird die Gültigkeit des Datensatzes jeweils angepasst. Dafür werden im Bereich "Target Command" die Pünktchen neben dem dargestellten Codeausschnitt angeklickt.

 

codeausschnitt-1

Oben wurde eine exemplarische Anpassung an dem Task "Flag rows for update" durchgeführt.

Damit auch die Gültigkeit des Datensatzes bei einer Terminierung auf den gewünschten Wert gesetzt wird, muss im Task "Historize old rows" die Gültigkeit um einen Tag reduziert werden:

 

codeausschnitt-2

 

Im Anschluss an die Anpassungen kann das IKM SCD gespeichert und die Testcases wiederholt werden. Nach Ausführen des ODI-Mappings in Testcase 2 ergeben sich nun folgende Konstellationen:

 

initiale-beladung-von-5-datensätzen

 

Wie gewünscht wurde die Gültigkeit des Datensatzes auf den 31.12.9999 und im Falle einer Terminierung auf das "Ladedatum - 1 gesetzt".

Im nächsten Blogeintrag zum Thema "Adjustments to the IKM Slowly Changing Dimensions" wird aufgezeigt, wie im IKM SCD durch weitere Anpassungen auch Deletes berücksichtigt werden können.

München
b.telligent Group Holding GmbH
Walter-Gropius-Straße 17
80807 München


Zürich
b.telligent Schweiz GmbH
Kanzleistrasse 57
8004 Zürich