== Übersicht ==

[http://www.talend.com/products/data-integration Talend Open Studio] ist ein Tool zur Datenintegration. Man kann auf einer graphischen Oberfläche verschiedene Komponenten plazieren, die Dateneingaben, Ausgaben und verschiedene Transformationen darstellen und durch Drag & Drop Datenströme zwischen diesen Komponenten darstellen. Lässt man das Ganze dann laufen, können umfangreiche Datenbank-Operationen auf diese Art und Weise automatisiert werden. Aus einem solchen graphisch erstellten Job kann letztlich auch ein ausführbares Programm erzeugt werden, das man dann z.B. regelmäßig per Cronjob auf seine Datenbestände loslassen kann.

Als ich das erste Mal ein Video über TOS gesehen habe, habe ich gedacht, das sieht ja nett aus, aber in der Praxis kann das gar nicht gehen, das man sich komplexe Daten-Operationen einfach zusammenklickt. Es geht aber doch. Der Grund hierfür ist, das es unglaublich viele verschiedene Komponenten für alle nur denkbaren Zwecke und Formate gibt. Außerdem sind alle Komponenten durchweg hochgradig konfigurierbar. So bietet z.B. der CSV-Import wirklich alle Einstellungsmöglichkeiten, die man sich nur denken kann. Hier ist überall an alle Eventualitäten gedacht worden, um auch wirklich alle Fälle abbilden zu können.

Wenn man entsprechenden Artikeln zum Thema glauben darf (ich habe persönlich nicht so viel Erfahrung), ist die Stärke von Open Source Tools in diesem Bereich auch vor allem, das sie wirklich Datenbank-unabhängig sind und mit allen verschiedenen Datenbanken zusammenspielen. Während also die Marktführer im Bereich Datenbanken eigene Integrationstools haben, die dann letztlich immer dazu dienen, alles andere in z.B. Oracle zu überführen oder daraus zu extrahieren, ist TOS von Anfang an völlig unabhängig von jeder herstellerspezifischen Denkweise, wie man an Daten herangeht.


== leichte Erweiterung ==

Da Talend und seine Komponenten in Java geschrieben sind, ist es selbstverständlich auch möglich, eigenen Quellcode einzubinden bzw. auch ganz eigene Komponenten hinzuzusteuern. Quellcode-Teile werden direkt transparent übersetzt, während man selbsterstellte Komponenten als JAR-File einbinden kann. So gibt es auch eine Menge bereits fertige Komponenten zur Integration in einige andere Programme (z.B. auch für [Adempiere]).

Talend Open Studio selber ist eine Eclipse RCP Anwendung. Im grossen und ganzen fühlt es sich daher an wie Eclipse. Es sollte auch per [OSGI]-Bundles bzw. Eclipse Plug-Ins erweiterbar sein.

== Links ==

Wer sich einen kurzen Überblick machen will, kann auf [http://www.youtube.com/watch?v=NyUw1Zmf_-8 YouTube] eine 5-Minuten-Einführung bekommen (und noch mehr, wenn man nach "Talend" sucht).

Die [http://www.talend.com/download/data-integration?qt-product_download_tabs=2#qt-product_download_tabs offizielle Anleitung] ist recht umfangreich und redet für meine Begriffe etwas abstrakt daher. Ein paar handfeste Beispiele könnten hier für mehr Klarheit sorgen. Die Anleitung ist unterteilt in einen User Guide (ca. 360 Seiten), in dem man vieles überfliegen kann, weil es sehr ausführlich breitgetreten ist und einen Components Reference Guide (ca. 1800 Seiten), aus dem man sich dann nur die benötigten Komponenten heraussucht.

Durchweg gut sind die [http://www.talendforge.org/tutorials/menu.php Tutorials von der Talend Webseite]. Allerdings gibt es viele Themen und Fragen, die dort nicht behandelt werden.

Ich habe [http://www.entwicklerforum.org/dokumentation-zu-talend-open-studio hier] ein kurzes Dokument gefunden, in dem jemand einen Kurzüberblick über seine ersten Schritte notiert hat. Trotz der Kürze hat mir dieses Dokument an einigen Stellen die Augen über Grundkonzepte geöffnet, die mir nach -zigseitigem Lesen des User Guides noch nicht klar waren.

Zur Integration in [Adempiere] gibt es zwei Seiten im Adempiere-Wiki:
* http://www.adempiere.com/Talend_Open_Studio
* http://www.adempiere.com/A_Step_by_Step_Guide_to_Data_Migration_with_Talend_ETL

== Beispiel ==

Ich habe folgende Eingangsdatei im CSV-Format. Diese soll Kunden mit einzelnen Umsätzen darstellen.

  10001, Schmitz, Hauptstr., Bitburger, 3
  10001, Schmitz, Hauptstr., Krombacher, 2
  10001, Schmitz, Hauptstr., Rhenser, 3
  10005, Mueller, Bahnstr., Bitburger, 3
  10005, Mueller, Bahnstr., Bolten, 2
  10006, Meier, Dorfplatz, Rhenser, 1
  10001, Schmitz, Hauptstr., Loona, 5

Im folgenden Screenshot sieht man das Haupt-Fenster von Talend Open Studio:

[{Image src='ScreenshotTalendOpenStudio.jpg' width=1000}]

Wie man sieht, ist eine '''~DelimitedFlatFile'''-Komponente "~KundenumsaetzeCSV" definiert, die die CSV-Datei darstellt. Dabei kann man natürlich alles einstellen, was es zu CSV-Dateien zu sagen gibt: Delimiter-Zeichen, Quoting-Zeichen, ignorieren von Überschriftszeilen, limitieren auf eine bestimmte Menge an Zeilen oder auch zufälliges Auswählen von Datensätzen.

Von dort geht ein Pfeil zu einer "'''tMap'''"-Komponente. In grün sieht man, daß bei der letzten Job-Ausführung 7 Datensätze durch diesen Pfeil gewandert sind. Die Map-Komponente ist ein sehr leistungsfähiges Ding und kann Joins, Berechnungen, Formeln benutzen, um Daten anzupassen und diese dann in einer oder mehreren Tabellen wieder ausgeben. Die Konfiguration geschieht dabei allerdings komplett graphisch. Man muss kein SQL oder ähnliches dazu beherrschen.

In diesem Fall ist die Map-Komponente so konfiguriert, daß Sie den Kunden- und den Umsatz-Teil der Datensätze separiert und diese in zwei Datenströmen weitergibt.

Der Kunden-Strom (oben) wird nun durch eine '''~UniqRow'''-Komponente geleitet, die dafür sorgt, das aus den 7 Zeilen nur drei werden (weil es ja nur drei identische Kunden gibt).

Der Umsätze-Strom wird dann nochmal sortiert in einer '''~SortRow'''-Komponente. Natürlich sind auch hier die Einstellungsmöglichkeiten sehr vielfältig.

Am Ende der beiden Ströme habe jeweils eine '''~LogRow'''-Komponente, die die entstandenen Daten loggt (also auf die Konsole ausgibt). Hier kann man natürlich auch aus einer gigantischen Menge an Ausgabekomponenten wählen, um die Daten nun in eine Datenbank-Tabelle oder eine XML-Datei oder in eine Excel-Tabelle oder oder oder... zu schreiben.

Das Ergebnis (mit ~LogRow und eingeschalteten Überschriften) sieht dann übrigens so aus:

  Kundennr	Kundenname	Adresse
  10001|Schmitz|Hauptstr.
  10005|Mueller|Bahnstr.
  10006|Meier|Dorfplatz

  Produkt	Menge	Kundennr
  Bitburger|3|10001
  Krombacher|2|10001
  Loona|5|10001
  Rhenser|3|10001
  Bitburger|3|10005
  Bolten|2|10005
  Rhenser|1|10006


== Tips und Tricks ==

Beim ersten Start, den ich von der Konsole vorgenommen habe, erschien dort eine Exception, die ich aber ignorierte, weil das Programm augenscheinlich lief. Es öffnete sich mit einem grossen leeren view, der mit "Welcome" überschrieben war. Später erst merkte ich, das hier eigentlich eine freundliche Begrüßungsseite angezeigt werden sollte. Dazu wird aber scheinbar eine bestimmte Version der xulrunner-Bibliothek benötigt. Nachdem ich [http://www.talendforge.org/wiki/doku.php?id=doc:installation_on_ubuntu#install_talend_open_studio dieser Anleitung] gefolgt bin, hatte ich diese installiert, ich kann alles sehen und die Exception tritt auch nicht mehr auf.

Man kann auch ganz eigene Komponenten erzeugen und diese dann wie die standardmäßig vorhandenen benutzen. Allerdings ist es nicht ganz klar, wo und wie das dokumentiert ist. Eine ausgezeichnete Anleitung in mehreren Schritten findet sich aber unter http://www.powerupbi.com/talend/componentCreation_1.html

----

[{Tag Datenbank}]