ETL 3

├ťbung

1. Legen Sie die gegebene Dimension d_produkt im ORACLE an. Die DDL finden Sie hier.

2. Erstellen Sie eine Transformationen um die Produkt Dimension mit Pentaho DI zu laden:

  • als SCD (Slowly Changing Dimension) Typ I (Ohne Historie) Dimension
  • als SCD (Slowly Changing Dimension) Typ II (Historisiert) Dimension

3. Laden Sie die Dimension mit den Produkt-Daten aus dem 1. Praktikum mit beiden Varianten.

4. Leeren Sie die Dimensionstabelle und laden die Dimension mit den Daten aus dem 1. Praktikum und danach mit den neuen Produktdaten mit beiden Varianten.

5. Erkl├Ąren sie die Differenzen

Dimension Lookup / Update

Zuweisen der technischen Felder:

  1. technischer Schl├╝ssel (PRODUKT_ID)
  2. Datumsfeld G├╝ltigkeit von (G_VON)
  3. Datumsfeld G├╝ltigkeit bis (G_BIS)
  4. Versions Feld (VERSION)
  5. Default-Datum Zukunft --> Pentaho Standard 2199
  6. Default-Datum Vergangenheit --> Pentaho Standard 1900

Im Tab [Key] wird der fachliche Schl├╝ssel angegeben:

  1. Zuweisung der fachlichen Schl├╝ssels aus dem Stream (z.B. PRODUKTNR) auf das Datenbankfeld (PRODUKT_NR) der Dimensionstabelle

Im Tab [Fields] wird das oder die Felder angegeben, die durch die Komponente auf Änderung hin bearbeitet werden müssen:

  1. Zuweisen des fachlichen Feldes (BESCHREIBUNG) aus dem Stream auf das Datenbankfeld (PRODUKT_NAME) aus der Dimensionstabelle.
    Als "Type of dimension update" muss ein Wert ausgew├Ąhlt werden, der den fachlichen Vorgaben entspricht.

    1. update --> SCD1 ohne Historisierung
      Werden Unterschiede in diesem Feld zwischen Stream und Datenbank erkannt, so wird der Wert in der Datenbank mit dem Wert aus dem Stream ├╝berschrieben (update).
      Ist der Wert nicht in der Datenbank enthalten, so wird ein neuer Datensatz in der Dimension angelegt.
    2. insert --> SCD2 mit Historisierung
      Wird ein Unterschied zwischen dem Stream-Feld und dem aktuellen Dimensionseintrag aus der Tabelle erkannt, so wird ein neuer Datensatz in der Dimension mit dem akteullen Stream-Wert eingef├╝gt. Der bisherige aktuelle Datensatz f├╝r diesen Wert, wird logisch ├╝ber das Feld (Date range end) G_BIS geschlossen.
      Die Felder Version und "Last Version" AKTUELL_JN werden dabei durch die Komponente gewartet.
    3. punch trough --> durch dr├╝cken
      Mit der punch trough Option, kann man erreichen, dass alle Werte zu diesem fachlichen Schl├╝ssel mit dem Stream-Wert aktualisiert werden. Dabei wird das Feld in der Dimensionstabelle f├╝r alle Eintr├Ąge auch historische also logisch geschlossene Eintr├Ąge aktualisiert.


 

Default-Datensatz

Der Default-Wert, der durch die Komponente automatisch in die Dimension eingef├╝gt wird, besteht lediglich aus dem technischen Schl├╝ssel mit dem Wert 0 und der Versionsnummer f├╝r diesen Dimensionseintrag mit dem Wert 1. Dieser Default-Datensatz entspricht nicht den Bedingungen, die in der DLL angegeben sind. Einige der sinnvollerweise als "not null" gekennzeichneten Spalten, werden nicht gef├╝llt. Demzufolge schl├Ągt l├Ąsst sich die Transformation nicht fehlerfrei ausf├╝hren. Durch das explizite f├╝llen des Default-Werts in der Dimension, kann ein sinnvoller Text in die Spalte PRODUKT_BESCHREIBUNG eingetragen werden, der sp├Ąter in der Analyse angezeigt wird. Wichtig ist, dass die Pentaho Komponente nur den technischen Schl├╝ssel 0 (PRODUKT_ID=0) akzeptiert.

Wann legt die Komponente einen Default-Datensatz an?
Wenn die Komponente das erste mal ausgef├╝hrt wird, wird zun├Ąchst gepr├╝ft, ob in der Tabelle der Daufault-Datensatz in der Dimensionstabelle existiert. Gibt es diesen nicht, so wird das oben beschriebene SQL ausgef├╝hrt, das den

  • technischen Schl├╝ssel mit dem Wert = 0
  • das Feld mit der Versionsnummer mit dem Wert = 1

belegt.

Gibt es einen Datensatz mit dem technischen Schl├╝ssel = 0, so pr├╝ft die Komponente die weiteren Felder der Dimension nicht.

L├Âsung

Verwendete neue Pentaho Komponenten:

  • Dimension Lookup / Update

Zun├Ąchst muss wie bei der 1. ├ťbung die Stage Tabelle STG_PRODUKT gef├╝llt werden. Die Stage Tabelle kann mit folgender DDL erzeugt werden.

Die Dimensionstabelle wurde mit der zur Verf├╝gung gestellten DDL erstellt.

Vor dem F├╝llen der Dimmension muss manuell ein Datensatz mit dem Default-Wert in die Dimensionstabelle eingef├╝gt werden. Dieser Datensatz enth├Ąlt den von Pentaho geforderten Defaultwert, wenn der fachliche Schl├╝ssel nicht in der Dimension gefunden werden kann. 

Die folgenden drei Transformationen erm├Âglichen:

  1. F├╝llen Defaultwert
  2. Dimension Update f├╝r Dimensionstyp 1 (Update)
  3. Dimension Insert f├╝r Dimensionstyp 2 (Indert)

Im Praktikum wurde in den mei├čten F├Ąllen der fachliche Schl├╝ssel als Zahl umgesetzt. In der hier gezeigten L├Âsung wurde der fachliche Schl├╝ssel als String (VARCHAR2) implementiert.

Das Laden des Defaultwertes muss in einer getrennten Transformation stattfinden, da diese Transformation nur einmalig ausgef├╝hrt wird. Die beiden anderen Dimensionen m├╝ssen jeweils zwei mal ausgef├╝hrt werden. Je einmal pro gelieferter Produktdatei. Dazwischen darf die Dimension nicht geleerte werden!

Stage Tabelle laden:

Default Wert in Dimension laden:

Dimension als SCD Type 1 (update):

Dimension als SCD Type 2 (insert):