Pentaho Data Integration – PDI Tutorial 2: Daten filtern und sortieren

In unserem zweiten PDI How To wollen wir die ersten Manipulationen an einem vorhandenen Datenstrom durchführen. Fast immer wird es in unseren späteren Transformationen notwendig sein, dass wir aus den uns vorgegebenen Daten eine relevante Teilmenge ausfiltern möchten, dass wir Datenfelder hinzufügen oder entfernen müssen oder Datenwerte dynamisch verändern wollen. Der Kettle PDI Designer bringt zu diesem Zweck eine große Menge an vorhandenen Bearbeitungsschritten mit, von denen wir uns heute drei genauer anschauen werden: den “Filter”-, “Sort”- und “Select”-Schritt.

Als Ausgangssituation haben wir eine beliebige Transformation vor uns, die eine Datenmenge einlesen und abschließend wieder ausgeben kann, wie beispielsweise im ersten How To unter Verwendung des “Text input”-Schrittes beschrieben. Stellen wir uns für dieses Beispiel als Datengrundlage etwa die nachstehende Liste von Schauspielern vor:

ktfs_actors

Unser Ziel ist es, eine Transformation aufzubauen, mit der wir solche Daten zunächst nach den von uns vorgegebenen Parametern filtern können, in der wir die für uns relevanten Datenfelder auswählen und anpassen können und die uns die Daten schließlich in sortierter Reihenfolge ausgibt. Dazu benötigen wir die folgenden Verarbeitungsschritte:

ktfs_trafo

1. Daten filtern

Zunächst fügen wir hinter der Datenquelle einen “Filter”-Schritt über den Designer ein und verbinden die beiden Schritte über das Kontextmenü. Mit einem solchen Filter-Schritt können Daten entweder mit einem beliebigen feststehenden Wert oder auch dynamisch mit einem anderen Feld aus dem Datenstrom abgeglichen und anschließend ausgefiltert werden. Der Filter-Schritt benötigt immer mindestens zwei Folgeschritte, an die die Daten weitergeleitet werden welche die Filter-Bedingung erfüllen bzw. nicht erfüllen. Der hier im Beispiel eingefügte “Dummy”-Schritt bewirkt, dass diejenigen Daten, welche die Filter-Bedingung nicht erfüllen, verworfen werden.

In der Konfiguration des Filter-Schrittes werden zunächst die beiden nachfolgenden Schritte, an die Daten weitergeleitet werden, definiert, darunter wird die eigentliche Filterbedingung eingegeben. Hier im Beispiel wollen wir nur diejenigen Schauspieler auswählen und weiterverarbeiten, welche nicht US-amerikanisch sind und noch nicht verstorben sind.

ktfs_filter_1

ktfs_filter_2

Tiefer verschachtelte Bedingungen können nach Klick auf das grüne Plus-Icon rechts oben eingerichtet werden:

ktfs_filter_3

ktfs_filter_4

Die gefilterten Daten leiten wir dann noch weiter an den folgenden “Select”-Schritt. So sollte unser zweifacher Filter schließlich ausschauen:

ktfs_filter_5

2. Datenfelder umbenennen: “Select values”

Der Select-Schritt bietet unter anderem die Möglichkeit, auf dem ersten Reiter Datenfelder umzubenennen und ihre Länge zu ändern, auf dem zweiten Reiter können Datenfelder vollständig aus dem Datenstrom entfernt werden, und auf dem dritten Reiter können Meta-Informationen zu den Datenfeldern angepasst werden. Die verfügbaren Datenfelder erhält man wieder jeweils automatisch über die “Get Fields”-Schaltfläche. Hier im Beispiel beschränken wir uns darauf, die Felder FirstName und LastName umzubenennen und die Felder Born und Died aus dem Datenstrom zu entfernen.

ktfs_select_1

ktfs_select_2

3. Daten sortieren: “Sort rows”

Im letzten heute neu einzufügendem Schritt, dem “Sort rows”-Schritt, werden dann nur noch diejenigen Felder, nach denen entweder auf- oder absteigend sortiert werden soll, in der untenstehenden Field-Liste ausgewählt und in der jeweiligen Reihenfolge eingetragen. Die Eintragung geschieht entweder per Mausklick oder über Get Fields, Anpassungen können nachträglich auch noch über das Kontextmenü oder über Tastaturkürzel vorgenommen werden.

ktfs_sort

Da der “Sort rows”-Schritt, bevor er eine gültige Sortierung vornehmen kann, die vollständige Datenmenge kennen muss, werden bei großen Datenmengen Auslagerungsdateien zur Vermeidung von zu hoher Speicherbelegung angelegt. Dieses Verhalten kann über die beiden Parameter “Sort size” oder “Free memory threshold” beeinflusst werden. Über den ersten Parameter kann eine Anzahl von Datenzeilen festgelegt werden, die im Speicher gehalten werden. Wird diese Anzahl überschritten, so werden Auslagerungsdateien angelegt. Mit dem zweitem Parameter kann, auf anderem Wege, festgelegt werden dass die Speicherauslastung der Java Virtual Machine regelmäßig überprüft wird. In diesem Fall werden Auslagerungsdateien dann angelegt, wenn der angegebene Schwellwert überschritten wird.

Die Ausgabe

Schon sind wir fertig mit dem Aufbau unserer Transformation, die Datenströme bereits nach den verschiedensten Anforderungen steuern und beeinflussen kann. Nach Ausführen der Transformation werfen wir wieder einen Blick auf die im XML-Schritt vorgegebene Ausgabedatei: Wie erwartet, erscheinen nun nur noch die ausgewählten Schauspieler in der Liste, die Namensfelder sind unbenannt, die Datumsfelder entfernt, und die Ausgabe ist nach der Nationalität und dem Namen der Schauspieler sortiert:

ktfs_output

Glückwunsch zum Abschluss unseres zweiten Tutorials!

One Reply to “Pentaho Data Integration – PDI Tutorial 2: Daten filtern und sortieren”

Mein Kommentar...