Wave me: thomasfriebel @ googlewave . com
Beiträge getaggt mit Tutorial
Video: Talend MDM Community Edition Installations-Tutorial
13. Mrz
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)
- Related posts on howto
- How to use SoftBank prepaid on your US iPhone « chris.ivarson
- HOW TO MAKE PLUM WINE FROM SCRATCH – using 5 gallon demijohns …
- Howto: Make Firefox Load Faster | Fix Mozilla Firefox
Google Wave – Suche mit Operatoren
19. Nov
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.
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 |
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)
- Related posts on google wave
- New 'Wave' of Communication and Collaboration – Google Wave
- 10 Tips to Better Google Wave Conversations
tFileFetch: HTTP-Zugriff in Talend Jobs
18. Nov
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.
![]()
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.
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.
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.
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 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)
- Related posts on komponente
- Hirnfasching.de» Blogarchiv » Neues aus den Niederlanden
- Alexander Ambronn » Coaching bei Umstrukturierungen stoppt …
- Rolf.Aschenbeck » Blog Archiv » Riesterrente rechnet sich nicht
tServerAlive: Lebt denn der Server noch?
16. Nov
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.
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.
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”)).
Dieses Szenario pingt meinen Server an. Das Ergebnis des Ping-Versuchs wird mit Hilfe von tFixedFlowInput in einen künstlich generierten Datensatz übertragen.
Hier sieht man den vollständigen Zugriff auf das Ergebnis, in Form eines Boolean-Objekts (true/false), aus der globalMap.
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)
- Related posts on komponente
- Wir haben das Rauchverbot gelockert, so please stop smoking …
- In Israel wurde der Raketenabwehrschild der NATO geschmiedet und …
- Social Media – Spiegel der Gesellschaft « Totterturm
tApacheLogInput: Apache Logfiles in TOS einlesen
12. Nov
Der einfachste Weg, um standardformatierte Log-Files des Apache HTTP-Servers in einem Talend-Job einzulesen, ist es die Komponenten tApacheLogInput zu verwenden.
tApacheLogInput geht davon aus, dass das Logfile in dem Format vorliegt, in welchem Apache HTTP es standardmäßig erzeugt. Sobald man an der Konfiguration der Logfile-Generierung seitens Apaches Änderungen vornimmt, ist die Kompontene tApacheLogInput nicht mehr zu verwenden. Dann heißt es, mit tFileInputPositional die Struktur nachzubauen.
Das Standard-Schema der Komponente tApacheLogInput sieht wie hier dargestellt aus und ist nicht veränderbar.
Einzustellen gibt es bei dieser Komponente nicht all zu viel. Lediglich der Pfad zum Logfile muss entsprechend angepasst werden.Optional kann die Job-Ausführung auch abgebrochen werden, sobald ein Eintrag im Logfile nicht dem Schema entspricht bzw. das Logfile nicht gelesen werden kann.
Sind die Daten des Apache Logfiles erstmal im Job, dann kann man damit ganz normal verfahren. Zum Beispiel liesse sich über die Spalte agent herausfinden, ob der Eintrag von einem normalen Website-Besucher oder aber von einem der vielen Robots und Spider (wie googlebot, googleadsense, yahooslurp!, etc.) stammt.
Possibly related posts: (automatically generated)
- Related posts on apache
- GET DOWN TONIGHT – Setting up a basic web server using Ubuntu 9.10 …
- Young guns and surprise guests turn Firebird Raceway into an …
- Related posts on howto
- How to configure Grub2 in Ubuntu 9.10 | Linuxers | Crazy Crispy’s Blog
Talend Open Studio: Syntax-Fehler schon während des Designs erkennen
29. Okt
Wer viel mit Talend Open Studio oder der Talend Integration Suite arbeitet, wird sich sicherlich manchmal darüber ärgern, dass der ein oder andere syntaktische Fehler beim Parametrisieren der Komponenten erst beim „Ausführen“ bzw. dem zuvor durchgeführten Kompiliervorgang als solcher erkannt wird.
Gerade wenn Jobs mal etwas umfangreicher sind, macht sich dieser Umstand störend bemerkbar, da vom Klick auf „Ausführen“ hin zum Start einige Sekunden ins Land gehen können.
Tatsächlich gibt es aber in den Preferences (oder Benutzervorgaben) im Menü Fenster, die Möglichkeit, das Talend
Studio so zu konfigurieren, dass es schon während der Bearbeitung die Syntaxprüfung durchführt. Diese Option ist im Einstellungsdialog unter „Talend/Performance“ zu finden, und wie hier im Bild rot umrandet, als Checkbox schnell aktiviert. Aber Vorsicht: Talend hat diese Option nicht ohne Grund standardmäßig deaktiviert. Wer also sein Talend Studio auf einer eher gemächlichen Maschine betreibt, sollte sich genau überlegen, ob er diesen Haken setzt. Aber Probieren geht bekanntlich über Studieren.

Ist die Funktion erst mal aktiviert, designed es sich ganz ungeniert.
Wie man in den beiden folgenden Bildern sehr schön erkennen kann, zeigt einem der Job-Designer nun direkt während des Editierens an, ob man Syntaxfehler, Type-Mismatches oder unbekannte Bezeichner verbaut hat.

TMap mit eingeschalter Fehlerprüfung
Hier sehr schön im TMap-Editor zu erkennen, wo die Zelle rot hinterlegt wird, wenn darin ein (Compile-Time-) Fehler enthalten ist.
Das folgende Beispiel zeigt eine Typenunverträglichkeit in einem Feld in den Komponenteneinstellungen. Statt den geforderten Tabellenbezeichner als String einzugeben, hab ich hier aus Versehen einen Integer-Wert 123 eingetragen, was mir der Designer auch direkt mit einer roten Fehlerbox um die Komponente quittiert.

Type-Mismatch Fehler in den Komponenten-Einstellungen
Also, kleine Einstellung, große Wirkung.
Einführung zu Talend Open Studio
30. Apr
Markus Klimaschewski hat im Entwicklerforum eine bebilderte Dokumentation zu Talend Open Studio verfasst.
Er zeigt darin die ersten Schritte mit TOS anhand vieler Screenshots auf und erklärt grundlegende Funktionen, wenn auch relativ knappgehalten. Aber sicherlich hat sich seine Mühe gelohnt, wenn er damit dem ein oder anderen helfen kann, die ersten Gehversuche mit Talend Open Studio zu bewältigen.
Fazit: Lesenswert für all diejenigen, die einen einfachen (deutschsprachigen) Einstieg in Talend Open Studio benötigen.
Tutorial: Eigene Talend-Komponenten entwickeln (Teil 1)
17. Mrz
Es gibt zwei Möglichkeiten, eigene Komponenten für Talend Open Studio bzw. Talend Integration Suite zu entwickeln.
Die erste – dass ist die, welche ich bisher selbst angewandt hatte – sieht wie folgt aus:
Besser ist der zweite, der einzig richtige Weg:
Die Talend-Entwicklungsabteilung versucht der Community nämlich soweit wie möglich, bei der Erstellung neuer Komponenten entgegen zu kommen. Dafür wurde die Component Designer-Perspektive in Talend eingebaut.

Der Komponenten-Designer zeigt die, in Entwicklung befindlichen, Komponenten als Ordnerstrukur an. Es gibt ausserdem noch einen Wizard zum Erstellen neuer Komponenten, auf den ich weiter unten noch einmal eingehen werden.
Damit man diese Perspektive sinnvoll verwenden kann, sind ein paar Einstel
lungen nötig.
Zuerst muss man in den Preferences “Talend Component Designer” öffnen, und ein Entwicklungsverzeichnis festlegen. Dieses sollte ausserhalb der TIS/TOS-Installation liegen. Somit kann man seine Arbeiten problemlos sichern oder in einem SVN-Repository verwalten.
Anschliessend sollte man, ebenfalls in den Preferences unter “Talend”/”Components”, ein Deployment-Verzeichnis für selbstentwickelte Komponenten angeben. Dieses Verzeichnis kann auch ein Verzeichnis innerhalb Talends sein, aber darf auch gerne extern liegen. Alle Komponenten in diesem Verzeichnis erscheinen in der Komponentenpalette, so dass man sie gleich ausprobieren kann.

Wenn man nun alle Einstellungen vorgenommen hat, dann kann man in die Component Designer-Perspektive wechseln.

Hier hat man nun die Wahl, ob man eine neue Komponente von Grund auf erstellen, oder eine Bestehende als Vorlage verwenden möchte.
Dazu braucht man nur einen Rechts-Klick auf das COMPONENT_PROJECT im Designer tätigen.
Zum Erstellen einer komplett neuen Komponente einfach auf “New/New Component” gehen. Es öffnet sich der Wizard.
Jetzt kann man anfangen, seine Komponente zu entwickeln.
Die Programmierung von Komponenten soll nicht teil dieses Tutorials sein, deshalb hebe ich mir das für einen weiteren Post auf.
Hat man dann also seine Komponente programmiert, braucht man nur noch zu wissen, wie man diese wieder zurück in die Palette bekommt:
Einfach Rechts-Klick auf Ordner der Komponente und “Push components to palette” aus dem Kontextmenü. Damit wird die Komponente aus dem Entwickler-Verzeichnis in das Deployment-Verzeichnis übertragen und die komplette Palette neu geladen. Die Komponente befindet sich nun in der Palette und kann benutzt werden.
Das ist der erste Teil einer Tutorial-Reihe, deren Umfang ich im Moment selbst noch nicht abschätzen kann. Aber es wird sicherlich noch einiges kommen.

