Talend: Datei basierend auf dem Inhalt einer Spalte splitten

Lesezeit: 4 Minuten

Heute möchte ich Dir gerne einen Anwendungsfall vorstellen, den ich mit dem Talend Open Studio lösen konnte. Talend Open Studio ist ein Open Source ETL-Tool, mit dem sich allerlei Aufgaben des Datenmanagements lösen lassen. Es handelt sich dabei um einen Code-Generator, mit dessen Hilfe die Datenverarbeitung und -integration auf visuelle Art und Weise automatisiert werden kann.

In dem beschriebenen Anwendungsfall habe ich eine Liste von Accounts. In einer Spalte dieser Liste steht der passende Ansprechpartner, der sich um den jeweiligen Account kümmert. Aus dieser Liste möchte ich mehrere Dateien erstellen, die für jeden Ansprechpartner eine Liste seiner oder ihrer Accounts beinhaltet.

Hier ein Ausschnitt meiner CSV-Datei, die ich hierzu als Quelldatei nutze:

Auszug aus der Quelldatei

Einlesen der Metadaten

Das Einlesen der Metadaten bereitet in Talend Open Studio keine Probleme. Ich wähle die CSV-Datei, gebe dort „Comma“ als Trennzeichen an und sage, dass in der ersten Zeile die Spaltenüberschrift steht.

Schritt 1: Einen sinnvollen Namen vergeben
Schritt 2: Datei auswählen
Schritt 3: Komma als Trennzeichen und „Kopfzeile enthält Spaltennamen“ auswählen
Schritt 4: Metadaten kontrollieren und Wizard abschließen

Job erstellen

Für den passenden Talend-Job benötigen wir die Komponenten

  • tFileInputDelimited mit dem Verweis zur und des Schemas der Quelldatei
  • tFlowToIterate um eine zeilenweise Verarbeitung zu ermöglichen
  • tFixedFlowInput um die Werte der einzelnen Spalte zu nutzen
  • tFileOutputExcel um die jeweiligen Dateien pro Ansprechpartner zu schreiben

Die Quellatei können wir aus den Metadaten hinzufügen und über die Main-Row mit der tFlowToIterate-Komponente verbinden. Dort wählen wir die Option „Verwende den Standard (Schlüssel, Wert) in globalen Variablen“ ab und fügen anstelle dessen unser aktuelles Schema ein. Es hat sich hier bewährt als Wert den Variablennamen mit einem vorgestellten Unterstrich zu nutzen.

Zuordnung von globalen Variablen

Die Komponente tFlowToIterate liest die Daten nun Zeile für Zeile ein und schreibt den aktuellen Wert in eine globale Variable.

Innerhalb der tFixedFlowInput-Komponente lesen wir diese Werte wieder ein. Dazu kopieren wir uns das Schema aus der tFileInputDelimited-Komponente und fügen es hier ein.

Schema aus einer anderen Komponente kopieren

Danach können wir im Modus „Use Single Table“ wieder jede einzelne Spalte mit dem Wert der globalen Variable füllen. Um auf eine globale Variable zuzugreifen, muss man ein klein wenig Java-Code verwenden. Das ist aber nicht schwierig und lässt sich relativ leicht merken. Für Strings nutzen wir „(String)globalMap.get(„<Variablen-Name>“)“ und für z. B. Integer dann eben „(Integer)globalMap.get(„<Variablen-Name>“)“. Entsprechend sieht unsere Komponente dann so aus:

Befüllen der Spalten mit dem Wert der globalen Variable

Als letztes kommt nun die Komponente, die die Daten in eine Excel-Datei schreiben soll. Excel ist hier natürlich lediglich ein Beispiel und es können auch alle anderen Arten von Dateien (CSV, XML, etc.) geschrieben werden.

Innerhalb der Komponente legen wir den Pfad fest, in der die Dateien geschrieben werden sollen. Als Name der Datei nutzen wir die globale Variable des entsprechenden Ansprechpartners.

Ansprechpartner als variablen Dateinamen übergeben

Zusätzlich aktivieren wir die Optionen „Schreibe als Excel 2007 Dateiformat (xlsx)“, „Include header“, „Existierende Datei anhängen“ und „Existierendes Blatt anhängen“.

Der Job verarbeitet 1.000 Zeilen…

Nachdem der Job gestartet wurde, werden die entsprechenden Dateien geschrieben und wir erhalten im ausgewählten Verzeichnis je eine Excel-Datei für jeden Ansprechpartner.

…und erstellt eine Datei für jeden Ansprechpartner

In dieser Excel-Tabelle findet somit jeder Ansprechpartner die ihm zugeordneten Kontakte.

Fertige Excel-Tabelle für eine Ansprechpartnerin

Downloads

Der fertige Job kann hier heruntergeladen werden. Die Beispieldatei, welche ich für den Job verwendet habe, kann hier heruntergeladen werden.

Viel Spaß beim Ausprobieren!

Related Posts

Tool-Tipp: remove.bg – Bilder online freistellen

Lesezeit: 1 Minute Mit dem neuen Tool remove.bg lässt sich ganz ohne Kenntnisse von Photoshop, Gimp und Co der Hintergrund in einem Foto entfernen. Und das sogar voll automatisch. Alles was man tun muss ist ein beliebiges Foto (mit einer Person drauf) hochzuladen und kann dann danach das gleiche Foto ohne Hintergrund wieder herunterladen. Veröffentlicht wurde das Tool […]

Read More

Skype-Anrufe mit Alexa

Lesezeit: 1 Minute Schon vergangenes Jahr haben Amazon und Microsoft angekündigt, dass es bald möglich sein wird Skype-Anrufe mit Alexa zu tätigen.Nachdem das Feature schon vor einigen Wochen in der USA verfügbar war, kann man seit ein paar Tagen auch endlich in Deutschland mit der Hilfe von Alexa skypen. Geräte mit Kamera, wie der Echo Show oder der […]

Read More

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

Blog abonnieren

Gib deine E-Mail-Adresse an, um diesen Blog zu abonnieren und Benachrichtigungen über neue Beiträge via E-Mail zu erhalten.

Blogstatistik

  • 4.189 Besuche

Blog abonnieren

Gib deine E-Mail-Adresse an, um diesen Blog zu abonnieren und Benachrichtigungen über neue Beiträge via E-Mail zu erhalten.

Schließe dich 14 anderen Abonnenten an