Zuletzt bearbeitet vor einem Monat
von Meikel Bisping

Kettle

Informationen zu einzelnen Steps

Update Step

siehe "Aus Exceldatei in Datenbank schreiben / Aus mehreren Sheets

Filter Step (ähnlich SQL where)

siehe unter "Aus Exceldatei in Datenbank schreiben / Erst bestimme Zeilen rausfiltern und dann Update

Beispiel db/module/sva/etl/sap_hr/sap_load_pgd_eintrittssdatum.ktr

Group by Step

Max/Min Ermitteln - siehe "Aus Exceldatei in Datenbank schreiben / Max(Spalte) ermitteln und nachtragen (Beispiel db/module/sva/etl/sap_hr/sap_load_pgd_austrittsdatum.ktr)

Kann noch mehr auch ersten/letzen Wert ermitteln, interessant für Gültigkeiten

  siehe Bei mehreren Datenzeilen Neuste raussuchen (Gültigkeit) ( Beispiel db/module/sva/etl/sap_hr/sap_load_pgd_wohnort.ktr)

Aus Exceldatei in Datenbank schreiben

Aus einem Sheet

Um Daten zu löschen legen man einen Step "Execute SQL script" an. Beispielhafter Inhalt delete from sva_pbl_neu;

Als Nächstes "Block until steps finishes"

- Dann "Microsoft Excel Input" -wichtig, Datentypen kontrollieren, S. unter Informationen zu einzelnen Steps / Microsoft Excel Input

Weiterhin  war die Erfahrung, dass man bei Fields "Get Fields from Header row" Alle Felder drin lassen sollte, nicht nur die tatsächlich benötigten.
Andernfalls schien Kettle durcheinander zu kommen und meldete z.B. für Tarifart (String) falscher Datentyp (Date), weil er die falsche Spalte gelesen hat.

- Dann Table Output


Beispiel db/module/sva/etl/sap_hr/sap_load_pgd.ktr


Aus mehreren Sheets

Um aus mehreren Sheets zu lesen, muss man pro Sheet eine Transformation anlegen, da sonst im Flow die Felder aus dem ersten Sheet anscheinend nicht vom zweiten Sheet überschrieben werden.

Beispiel db/module/sva/etl/sap_hr/sap_load_pbl.ktr und sap_load_pbl2.ktr.

Die Informationen aus dem zweiten Sheet werden per "Update Step" nachgetragen.

Wenn in dem zweiten Excelsheet nicht definitiv alle primary keys enthalten sind, die im ersten sind, muss man "Skip Lookup" aktivieren, sonst kommt eine Fehlermeldung, dass z.B. für eine Personalnummer keine Amts-/Dienstbzeichnung gefunden wurden.

Entry to update with following key could not be found: 47Kettle update step mit lookup.png

Max(Spalte) ermitteln und nachtragen

Im Beispiel soll das austrittsdatum aus einem Excelsheet nachgetragen werden, dazu muss man für jede Personalnummer das max(Ende) ermitteln.

Beispiel db/module/sva/etl/sap_hr/sap_load_pgd_austrittsdatum.ktr

Dies geht in dem man zunächst die Exceldatei einliest.

Dann ist für das "Group by" zunächst ein "Sort Rows" nötig.

Anschließend kommt ein "Group By"-Step

Und zum Schluss ein "Update"-Step - hier wieder "Skip lookup" aktivieren, siehe unter Aus Exceldatei in Datenbank schreiben / Aus mehreren Sheets


Erst bestimme Zeilen rausfiltern und dann Update

Im Beispiel soll das Eintrittsdatum aus einem Excelsheet ermittelt werden, dazu muss man für jede Personalnummer nur die Zeilen mit DaArt=01 lesen und dann das min(Datum) bestimmen.

Beispiel db/module/sva/etl/sap_hr/sap_load_pgd_eintrittssdatum.ktr

Dies geht in dem man zunächst die Exceldatei einliest.

Dann folgt ein "Filter Rows" auf DatAr=01

Dann ist für das "Group by" zunächst ein "Sort Rows" nötig.

Anschließend kommt ein "Group By"-Step

Und zum Schluss ein "Update"-Step - hier wieder "Skip lookup" aktivieren, siehe unter Aus Exceldatei in Datenbank schreiben / Aus mehreren Sheets


Bei mehreren Datenzeilen Neuste raussuchen (Gültigkeit)

Im Beispiel soll zu Personalgrunddaten die aktuelleste Adresse PLZ etc ermittelt werden. Dazu gibt es ein Sheet, das pro Personalnummer mehrere Einträge mit Gültigkeiten (Beginn/Ende) geben kann.

Beispiel db/module/sva/etl/sap_hr/sap_load_pgd_wohnort.ktr

Vorgehen:
Excelsheet auslesen

Im Beispiel zusätzlich Filter auf Art=1 (ständiger Wohnsitz, nicht Zweitwohnsitz)

Sort Rows nach PersNr und Ende

Group By - Step mit Type "Last Value"

Kettle group by lastvalue.png

Dann wieder "Update Step"