Data Integration mit dem Talend Data Mapper – Verarbeitung komplex strukturierter Datenformate
Mit dem Data Mapper bietet Talend ein Tool zur Verarbeitung von Datensätzen mit komplexen Strukturen an. Verfügt die Struktur eines gegebenen Datensatzes über verschachtelte Schleifen, so erweist sich die Verwendung von üblichen Talend-Komponenten (wie tXMLMap) zur Verarbeitung des Datensatzes häufig als aufwändig und komplex. Der Data Mapper kann diverse Formate und Strukturen von Datensätzen einlesen und bietet sich sowohl für das Mapping von Daten zwischen verschiedenen Dokumentstrukturen als auch für das Transformieren von Daten durch Einsatz der zur Verfügung gestellten Funktionen an. In diesem Beitrag wird anhand von Beispielen eine kleine Auswahl an Funktionalitäten des Data Mappers präsentiert und es werden Fälle aufgezeigt, in welchen sich der Einsatz des Data Mappers lohnen kann.
Zahlreiche Funktionalitäten im Talend Data Mapper
Der Data Mapper bietet eine Reihe von Funktionen an, die per Drag & Drop in das Mapping eingebaut werden können. Diese sind übersichtlich in verschiedene Kategorien eingeteilt. Unter anderem lassen sich mit diesen Funktionen Strings oder Date-Objekte verarbeiten, logische Vergleiche einbauen oder Daten aus verschachtelten Schleifen verarbeiten. Um den Umfang der Funktionalitäten zu verdeutlichen, wird im Folgenden beispielhaft eine Struktur eines XML-Dokuments betrachtet.
Verarbeitung eines XML-Dokuments mit dem Talend Data Mapper – Ein praktisches Beispiel
Das Beispieldokument stellt Adressdaten wie Name, Anschrift, Telefon oder Email bereit. Innerhalb des <root>-Knotens enthält das Dokument einen <addresses>-Knoten, welcher wiederum mehrere <address>-Knoten enthalten kann. In diesem Knoten sind Daten wie Name oder Anschrift hinterlegt. Zu jedem <address>-Knoten können mehrere <addressOption>-Unterknoten gehören, die zusätzliche Informationen enthalten. Für die addressOptionId 1 handelt es sich beim <value> um eine Telefonnummer, ist die addressOptionId gleich 2, so befindet sich im <value>-Feld eine Email-Adresse.
Anhand dieses XML-Dokuments können nun ein paar der Funktionalitäten des Data Mappers präsentiert werden.
Folgende Anforderungen sollen mit dem Data Mapper umgesetzt werden:
1. Die <addressOption>-Unterknoten sollen entfernt werden und die entsprechenden Werte aus den Unterknoten sollen in ein neues Feld <phone> oder <email> innerhalb des <address>-Knotens übernommen werden.
2. Die Felder <name1> und <name2> sollen zu einem Feld <name> konkateniert werden
3. Der Wert des Feldes <createdAt> soll als Date-Objekt geparst und in einem anderen Format ausgegeben werden.
Die Funktionen des Talend Data Mappers ermöglichen die Verarbeitung und Umstrukturierung des XML-Dokuments
-
Funktion „AgConcatFirstPresentValue“
Die erste Anforderung (1.) kann mithilfe der Funktion „AgConcatFirstPresentValue“ realisiert werden. Diese Funktion sorgt für die gewünschte Verarbeitung der verschachtelten Schleifen. Sie erfordert die Angabe einer Loop Expression, damit der Data Mapper weiß, in welchen Unterknoten er nach dem gewünschten Wert zu suchen hat. Als Loop Expression hilft in diesem Fall die SimpleLoop-Funktion. Diese loopt innerhalb eines jeden <address>-Knotens über die zugehörigen addressOptions. Geben wir zusätzlich im Filter der SimpleLoop-Funktion an, dass wir nur die Unterknoten betrachten wollen, deren addressOptionIds gleich 1 für die Telefonnummern (gleich 2 für die Email-Adressen) sind, so ziehen wir dadurch die passenden Werte in das <phone>– bzw. <email>-Feld.
-
Funktion „Concat“
Für die zweite Anforderung (2.) bietet der Data Mapper die Funktion „Concat“ an. Alle Felder, die im Mapping an diese Funktion übergeben werden, werden zu einem String konkateniert. In unserem Beispiel konkatenieren wir den Wert des <name1>-Feldes, ein Leerzeichen “ “ als String und den Wert des <name2>-Feldes.
-
Funktion „ParseDateTime“
Um die dritte Anforderung (3.) realisieren zu können, ist es wichtig, das Format des Strings zu kennen, in dem das <createdAt>-Datum in der Input-XML dargestellt wird. Verwendet man zum Parsen des Strings die Funktion „ParseDateTime“, so muss ein zum String passendes Pattern angegeben werden.
Schleifenfreie Darstellung eines Datensatzes nach Verarbeitung mit dem Talend Data Mapper
Die aus dem erstellten Mapping resultierende Output-XML sieht dann wie folgt aus.
Alle drei gewünschten Anforderungen konnten umgesetzt werden. Ein Adressdatensatz wird nun in sich vollständig schleifenfrei dargestellt. Dies kann in manchen Fällen die Verarbeitung der Daten etwas vereinfachen, beispielsweise wenn die Daten in eine Datenbanktabelle geschrieben werden sollen.
Talend Data Mapper – Hilfreiches Tool bei komplexen Dokumentenstrukturen
Das erstmalige Erstellen eines Mappings mit dem Data Mapper ist häufig mit einem größeren Aufwand als bei den üblichen Talend-Komponenten (wie z.B. einer tXML-Map) verbunden. Es müssen Input- und Output-Strukturen angelegt werden und auch die Erzeugung des Mappings gestaltet sich häufig – zum Beispiel aufgrund von fehlender AutoMap-Funktionen – als zeitaufwändiger. Beim Parsen von Date-Objekten lässt sich für die Output-Struktur lediglich eine beschränkte Anzahl an Patterns verwenden. Ist das gewünschte Pattern darunter nicht enthalten, so muss innerhalb des Data Mappers auf Java-Funktionen zurückgegriffen werden. Auch aus Performance-Sicht verliert der Data Mapper je nach Komplexität des Mappings gegen übliche Mapping-Komponenten.
Nimmt der Nutzer jedoch all diese Nachteile in Kauf, so hat er ein mächtiges Tool zur Verarbeitung von Dokumentstrukturen mit verschachtelten Schleifen an der Hand. Ist ein Mapping erstmal erstellt, so kann dieses in beliebig vielen Talend Jobs wiederverwendet werden. Ist eine Änderung nötig, so muss nur das Mapping angepasst werden und die Änderung wird direkt von allen Talend Jobs übernommen, die auf dieses Mapping zugreifen.
Zusammenfassend lässt sich festhalten, dass die Verwendung üblicher Mapping-Komponenten für einfache Dokumentstrukturen aufgrund der Nachteile des Data Mappers sinnvoller ist. Für komplexere Strukturen kann man die Verwendung des Data Mappers aufgrund seiner zahlreichen Funktionalitäten jedoch als Alternative empfehlen.