TwitterGoogle

Talend Open Studio Tutorial-Reihe

Auf eine sehr vielversprechende TOS Tutorial-Reihe bin ich gestern im Blog von Cork Technology Services gestoßen. David Hollingworth beschreibt dort in bisher drei Folgen, wie er die Daten seiner Wetterstation ausliest und in eine MySQL-Datenbank überträgt.

“I’ve a weather station running at home (see my site TulligWeather). The software that logs the weather data writes the information to a “comma separated values” (CSV) data file – one line of data every 5 minutes. My requirement was to find a reliable way to insert this into a database so that I can manipulate it further (e.g. draw charts; but that’s another tutorial).”

Teil 1: Einleitung und Grundsätzliches

Im ersten Teil der Reihe beschreibt er das grundsätzliche Setup und sein vorhaben.  Hier ganz wichtig anzumerken, dass David nicht Java- sondern Perl-Code generieren lässt. Aber auch für Leser, die mehr an der Java-Generierung interessiert sind, ist das Tutorial lesenswert.

Teil 2: Projekt anlegen und Job definieren

Los geht es mit dem Einrichten eines Projekts in Talend Open Studio 4 und dem Anlegen eines neuen Jobs im Design Workspace. Im zweiten Teil des Tutorials zeigt David sehr detailliert und mit vielen Screenshots, wie er ein Projekt anlegt, wie das Studio aufgebaut ist und wie man einen neuen Talend-Job erzeugt.

Teil 3: Flatfile Metadaten einrichten

Bevor im neu angelegten Job etwas verarbeitet werden kann, müssen bzw. sollten(!) alle Datenquellen und -senken als Metadaten im Repository definiert werden. Teil drei der Tutorial-Reihe zeigt sehr schön und ausführlich, wie dies für eine CSV-Datei in Talend gemacht wird.

Teil x: Der Blick in die Glaskugel

Ich vermute, dass im nächsten Teil dann die MySQL-Datenbankverbindung als Metadaten-Eintrag angelegt wird und sich die Reihe sicherlich noch um zwei bis drei Folgen ausdehnen wird.

Sobald es weitere Teile des Tutorials gibt, werde ich dies hier anfügen, so dass niemand etwas verpasst.




 in


Possibly related posts: (automatically generated)

Video: Talend MDM Community Edition Installations-Tutorial

Jim Walker, der Talend MDM Produktmarketing Manager, erklärt in diesem Tutorial-Video, wie man die Open Source MDM-Lösung von Talend installiert und konfiguriert.

Weitere Videos zu Talend findet man im TalendChannel auf youtube.

Possibly related posts: (automatically generated)

Google Wave – Suche mit Operatoren

Mit Google Wave suchen ist ganz leicht, wenn man die verschiedenen Möglichkeiten kennt. Prinzipiell funktioniert die Suche wie auch bei der normalen Google-Websuche. Man kann einzelne Begriffe suchen, in dem man diese im Suchfeld der Reihe nach auflistet. Möchte man, dass ein Suchbegriff NICHT in den Treffern auftaucht, dann stellt man ein Minus davor.

 in

Generell scheint es, als ob Google Wave ein hohes Maß an “Intelligenz” mitbringt. Sucht man zum Beispiel nach Waves, deren Inhalt mit Datenintegration zu tun hat, dann reicht es, wenn eine Wave-Nachricht nur einen Link zu www.talend.com enthält. Google scheint hier also auch sein Wissen um die Inhalte verlinkter Websites in die Trefferbewertung mit einfließen zu lassen.

Um Google Waves noch besser finden zu können, gibt es eine ganze Menge von Spezial-Operatoren für die Suche in Google Wave. Die folgende Tabelle listet alle auf, die ich bisher kennengelernt habe. Auf Vollständigkeit gebe ich natürlich keine Gewähr.

Operator Beschreibung Beispiel
title:Suchbegriff Findet alle Waves mit Suchbegriff im Titel title:google, title:“google wave“
lang:code Findet alle Waves, deren vermeintliche Sprache dem code entspricht lang:de, lang:fr, lang:en
caption:Suchbegriff Findet alle Waves, die Bilder mit Suchbegriff in der Beschreibung enthalten caption:bmw, caption:“bmw X5“
creator:Name oder from:Name Findet alle Waves, die von Name erzeugt wurden creator:thomas, from:georg
participant:Name oder with:Name Findet alle Waves, in die Name direkt involviert ist participant:thomas, with:public
contributor:Name oder by:Name Findet alle Waves, bei denen Name etwas geschrieben hat contributor:thomas, by:claudia
to:Name Findet alle Waves, bei denen Name ein Teilnehmer, aber nicht der Ersteller ist to:thomas
dfrom:Name Findet alle Waves, in denen Name eine Direct Message geschrieben hat dfrom:meisterpropper
dto:Name Findet alle Waves, in denen Name mit einer Direct Message angeschrieben wurde dto:Palmolive
is:note Findet alle eigenen Waves, die keine weiteren Teilnehmer haben (gelten als Notiz) is:note
is:read Findet alle Waves, die vollständig gelesen wurden is:read
is:unread Findet alle Waves in denen mindestens eine Nachricht nicht gelesen wurde is:unread
has:tag Findet Waves mit mindestens einem gesetzten Tag has:tag
tag:Name Findet alle Waves, die das Tag Name gesetzt haben tag:urlaub
has:attachment Findet Waves, die ein bel. Attachment enthalten has:attachment
has:image Findet alle Waves in denen Bilder eingefügt wurden has:image
has:document Findet alle Waves in denen Dokumente hinzugefügt wurden has:document
onlyto:Name Findet alle Waves bei denen Name der ausschließliche Empfänger ist onlyto:thomas, onlyto:me

 in

Da sich Google Wave noch im Beta-Stadium befindet, wird sich diese Liste sicherlich noch verändern. Wer auch jetzt schon einen Operator kennt, der hier nicht aufgelistet ist, darf mir das gerne in einem Comment mitteilen.

Possibly related posts: (automatically generated)

tFileFetch: HTTP-Zugriff in Talend Jobs

Mit tFileFetch kann man in seinen ETL-Prozessen auf beliebige HTTP-Server zugreifen, entweder um Dateien herunterzuladen, oder Daten zu übermitteln. Auch der Upload von Dateien ist dabei möglich. Ausserdem bietet tFileFetch auch den lesenden Zugriff auf Dateien auf einem FTP- sowie auf einem Samba (SMB)-Server. FTP und SMB-Zugriff werde ich jedoch in diesem Beitrag außenvorlassen.

TFileFetch Icon32 in

Die Komponente tFileFetch, deren Name zugegebenermaßen nicht unbedingt auf die ganze dahinterliegende Funktionalität schließen lässt, befindet sich im Bereich Internet der Komponenten-Palette.

Wenn das Protokoll http ausgewählt ist, kann man zum einen Dateien und Seiten aus Talend herunterladen und zum anderen auch HTML-Formulare ausfüllen, ja sogar Dateien hochladen.

Im Feld URI muss man dazu die vollständige Adresse samt Protokoll (also http://) angeben. Das Destination Directory sollte auf das Verzeichnis zeigen, in dem das Ergebnis des Aufrufs abgelegt werden soll. Je nachdem, ob man nun eine Datei herunterlädt, eine Seite aufruft oder ein Formular abschickt, wird das Ergebnis des Aufrufs dort unter dem entsprechenden Namen abgelegt (also bei http://www.meinserver.de/xyz/index.html als index.html).
Möchte man dies nicht, so kann man im Feld Destination Filename auch einen eigenen Namen explizit vergeben.

 in

Beim Zugriff auf HTTP-Server werden für das Öffnen eines Dokuments normalerweise die Methode GET und beim Versenden von Formulardaten die Methode POST verwenden. Auch wenn es noch weitere Zugriffsmethoden (wie z.B. PUT oder DELETE) gibt, werden diese von tFileFetch nicht unterstützt. Der Zugriff über GET bedingt, dass evtl. zu übertragende Formulardaten in der URL übergeben werden. Daher ist der Upload von Dateien nur mit POST möglich. Auch ist die Anzahl der Zeichen, die in einer URL enthalten sein dürfen auf unter 4000 beschränkt. Aus diesem Grund ist standardmäßig die Checkbox POST method aktiviert. Möchte man keine Formulardaten an den Server übermitteln, empfiehlt es sich daher, diese Checkbox abzuwählen.

In der Tabelle Parameters können die einzelnen Formularfelder in Form von Key-Value-Paaren ausgefüllt werden. Für jedes Feld fügt man einfach mit dem grünen Plus eine neue Zeile in der Tabelle hinzu. Die Spalte Name muss den Feldbezeichner enthalten während in Value der zu übertragende Wert eingetragen wird.

Möchte man Dateien mit dem Formular hochladen, so muss dies im Reiter Advanced settings eingerichtet werden. Hat man die Checkbox Upload ausgewählt, so erscheint darunter eine Tabelle. In dieser Tabelle trägt man nun wieder die Namen der File-Upload-Felder ein und unter File den absoluten Pfad zur Datei.

 in

Beim Upload von Dateien ist es erforderlich, dass die Übertragungsmethode POST unter Basic settings aktiviert ist.

Ist beim Zugriff auf die angegebene URI eine HTTP-Authentifizierung erforderlich, so kann man die entsprechende Checkbox anwählen und dann den Benutzernamen und das Passwort angeben.

 in

Seit der Version 3.2 von Talend Open Studio und Talend Integration Suite lassen sich Proxy-Einstellungen job-weit mit der Komponente tSetProxy einrichten, daher verzichte ich auf die Beschreibung der Proxy-Settings in tFileFetch.

Beim Zugriff auf einen Server kann natürlich auch einmal ein unerwünschter Zustand eintreten, wie z.B. eine Überlastung oder Downtime des Servers. Damit der Talend-Prozess dann nicht endlos wartet, bis seine Anfrage beantwortet wird, gibt es das Feld Timeout. Hier kann man die maximale Zeit, die die Komponente geduldig auf Response wartet, in Millisekunden angeben.

 in

In diesem Beispielszenario wird ein Formular per POST an eine URL geschickt und, mit den per File-Upload übermittelten Transaktionen, aus der Datei transaktionen_2009_11.csv, eine CSV-Datei erzeugt. Diese wird als Ergebnis des Aufrufs im Verzeichnis /var/temp/result/ als umsaetze.csv abgelegt.

Da es sich bei dieser URL um einen geschützten Bereich auf dem Web-Server handelt, werden der Benutzername und das Passwort für die Authentifizierung mit übertragen. War der Aufruf erfolgreich, so werden die heruntergeladenen Daten mit der Komponente tFileInputDelimited eingelesen und mit tMysqlOutput in die Zieltabelle einer MySQL-Datenbank übertragen.

Aber auch eine Spam-Maschine lässt sich mit dieser Komponente relativ schnell und unkompliziert erstellen. Nur wie das geht werde ich hier sicherlich nicht vormachen.

Possibly related posts: (automatically generated)

tServerAlive: Lebt denn der Server noch?

Beim Design von Datenintegrationsprozessen macht man sich oftmals viele Gedanken im Vorfeld. So werden Schwächen in der Datenqualität meist schon vorab ermittelt (z.B. mit Talend Open Profiler) und dann im ETL-Prozess eine entsprechende Optimierung umgesetzt.

Auch zur Laufzeit auftretende Fehler, wie der Klassiker, die NullPointer-Exception werden bereits berücksichtigt und z.B. mit tSchemaComplianceCheck verhindert. Aber eine Prüfung auf Verfügbarkeit eines entfernten Rechners (z.B. dem Datenbank- oder dem FTP-Server) wird eher selten explizit vorgenommen. Meistens laufen die entsprechenden Komponenten dann eben in eine entsprechende Exception und der Prozess wird (durchaus auch kontrolliert) beendet.

Dumm nur, wenn bis dahin schon andere System angezapft oder z.B. temporäre Dateien angelegt wurden. Viel Aufwand, der letztlich umsonst war und u.U. aber entsprechende Last verursacht hat.

TServerAlive Icon32 in Mit tServerAlive hat man die Chance, diese unnötige Last zu vermeiden. tServerAlive befindet sich in der Komponenten-Palette im Bereich Misc bzw. Verschiedenes. Die Komponente tServerAlive pingt ein entferntes System entweder über das Ping- oder das Telnet-Protokoll an.

 in

Erhält tServerAlive im definierten Zeitraum (siehe das Feld Timeout) keine entsprechende Antwort vom Zielsystem, so ist das Ergebnis des Aufrufs false und wird in der globalMap abgelegt. Antwortet der angepingte Rechner hingegen, so schreibt tServerAlive true in die globalMap (z.B. tServerAlive_1_SERVER_ALIVE_RESULT).
Der Zugriff auf das Ergebnis erfolgt dann einfach via ((Boolean)globalMap.get(“tServerAlive_1_SERVER_ALIVE_RESULT”)).

 in

Dieses Szenario pingt meinen Server an. Das Ergebnis des Ping-Versuchs wird mit Hilfe von tFixedFlowInput in einen künstlich generierten Datensatz übertragen.

 in

Hier sieht man den vollständigen Zugriff auf das Ergebnis, in Form eines Boolean-Objekts (true/false), aus der globalMap.

 in

Dieser Datensatz wird anschließend mit tLogRow auf die Konsole ausgegeben. Wie dieser Output dann aussieht, zeigt das Bild links.

Somit hat man ein einfaches Instrument an der Hand, um sicherzustellen, das entfernte Systeme, auf welche man in seinen ETL-Jobs zugreifen möchte, auch wirklich verfügbar sind.

Oder man programmiert sich mit tServerAlive und einer tInfiniteLoop einen Wächter, der einfach in regelmäßigen Intervallen prüft, ob noch alle Systeme laufen und ggfs. eine Status-EMail verschickt.

Possibly related posts: (automatically generated)