IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ Talend

FAQ TalendConsultez toutes les FAQ

Nombre d'auteurs : 12, nombre de questions : 52, dernière mise à jour : 15 juin 2021 

 
OuvrirSommaireUtilisation générale / Développement de job

Tout d'abord pour créer une routine, il faut créer un nouveau fichier de Routine dans la partie "Code" en cliquant droit sur "Routine > Create routine" du volet de gauche.

Ensuite dans le fichier créé, il suffit de faire comme si c'était une classe java avec des méthodes statiques.

Exemple :

 
Sélectionnez
 /**
     * helloExample: retourn "hello" + message.
     * 
     * 
     * {talendTypes} String
     * 
     * {Category} User Defined
     * 
     * {param} string("developpez") input: la chaine de caractère à afficher.
     * 
     * {example} helloExemple("developpez") # Hello developpez.
     */
    public static void helloExample(String message) {
        if (message == null) {
            message = "Talend";
        }
        return "Hello " + message ;
    }

Comme vous pouvez le voir, il faut bien définir tous les paramètres d'entrée avant entre les commentaires car sinon vous ne pourrez pas accéder à cette fonction.

Ensuite après avoir enregistré cette nouvelle routine, pour l'utiliser, il suffit d'y faire appel de cette façon :

 
Sélectionnez
nomDeLaRoutine.helloExample("tout le monde")

On peut aussi retrouver ces routines dans la catégorie "user defined " des fonctions présentes dans Talend.

Version : Testé en version 3.0.3

Créé le 11 juin 2008  par Rgent

Par défaut, Talend inclut certaines routines système dans les projets. Vous ne pouvez pas modifier ces routines en les éditant.

Pour ce faire, éditer les fichiers Java dans le répertoire suivant "plugins\org.talend.librariesmanager_X.X.X.rXXXXX\resources\java\routines\system".

Cela vous sera utile par exemple en cas de problème de conversion de type String vers Long, les "" ne sont pas considérées comme égale à 0, et il faut donc modifier la classe ParserUtils pour permettre cette conversion.

Version : Testé en version 2.0.4

Créé le 6 octobre 2008  par mumuri

Il suffit d'utiliser un composant "tLibraryLoad" et charger le fichier ".properties" voulu. Vous pourrez alors renommer le composant en "tPropertiesLoader" pour être plus "propre".

Version : Testé en version 2.0.4

Créé le 6 octobre 2008  par mumuri

Par défaut, Talend fournit un composant tLogCatcher pour loguer des informations. Celui-ci peut être utile dans certains cas, mais il ne permet pas de loguer ses propres messages.

Afin de loguer des messages personnalisés de type Info, Warn ou Error :

  • rajouter un composant "tLibraryLoad", où vous chargerez votre librairie "log4j.jar"
  • rajouter un composant "tPropertiesLoader", où vous chargerez votre fichier "log4j.properties"
  • pour initialiser le loguer, rajouter une routine Java "Loguer", où vous allez déclarer un instance statique de votre loguer

Version : Testé en version 2.0.4

Créé le 6 octobre 2008  par mumuri

Concrètement, vous avez un job père qui appelle un job fils avec un tRunJob.

Dans le job fils, ajoutez des variables de contexte qui serviront de paramètres pour ce job puis enregistrer ce job.

Ensuite cliquez sur le tRunJob présent dans le job père, et allez dans l'onglet "Component". Ici vous avec un tableau "Parameters | Value". Cliquez sur le bouton avec la croix verte. Cela va ajouter une ligne avec pour paramètre le nom d'une variable de contexte présent dans votre job fils. Sélectionnez dans la liste déroulante la variable que vous souhaitez charger et attribuez lui une valeur.

On peut utiliser aussi la coche "Transmit whole context" du tRunJob qui transmettra toutes les valeurs des variables de contexte du job maitre qui sont présents dans le job fils.

Version : Testé en version 2.4.3

Créé le 9 avril 2009  par Jean-Sébastien DARGES

Tout d'abord ajoutez un contexte dans l'onglet contexte du Job. Ensuite plusieurs choix s'offre à vous :

1 : définissez directement sa valeur dans l'onglet contexte, partie "Valeur en table". En gros sa valeur par défaut avant traitement.

2 : définissez sa valeur dans un tJava, tJavaRow, tJavaFlex... de la manière suivante :

 
Sélectionnez
context.MaVariableDeContexte = "valeur";

ou suivant les cas :

 
Sélectionnez
context.setProperty("MaVariableDeContexte ","valeur");

3 : liez un flux principal à un tContextLoad qui aura pour schéma :
- key String(255)
- value String(255)

Avec par exemple comme flux principale :

 
Sélectionnez
MaVariableDeContexte1|val1
MaVariableDeContexte2|val2
...

Du coup le tContextLoad va charger chaque valeur dans le nom de la variable de contexte associée, définie en premier lieu

Mis à jour le 4 mai 2010  par Jean-Sébastien DARGES

Si vous voulez utiliser votre variable de contexte dans un composant particulier comme par exemple indiquer le nom d'un table d'un base de données, un nom de fichier, faire une requête par rapport à la valeur de cette variable...

Il suffit d'appeler cette variable de la façon suivante :

 
Sélectionnez
context.NomVariableDeContexte

ou encore

 
Sélectionnez
context.getProperty("NomVariableDeContexte")

Suivant où vous faite appel à votre variable de contexte, il faudra utiliser l'une ou l'autre méthode

Créé le 16 avril 2009  par Jean-Sébastien DARGES

Dans Talend, il est possible de faire des contextes d'environnement pour les différents environnement de travail (DEV, RECETTE, PROD...). Pour récupérer la valeur du contexte courant, il suffit d'utiliser la variable "contextStr" et par exemple de l'utiliser de la manière suivante :

 
Sélectionnez
if(contextStr.equals("DEV")) {
//faire quelque chose
} else {
//faire autre chose
}
Mis à jour le 4 mai 2010  par Jean-Sébastien DARGES

ELT : Extract Load Tranform

Contrairement à un composant ETL qui extrait, transforme et charge en base de données, un ELT n'a pas de moteur d'exécution mais utilise les capacités de traitement des bases de données qu'il exploite

Si vous utilisez ces modes de transformations, les données seront donc traitées par la base de données et non plus par Talend et donc Java ce qui peut améliorer les performances lors de gros traitement.

Créé le 6 octobre 2008  par souska, Jean-Sébastien DARGES

- On Component OK : si aucune erreur est survenue dans sur le composant d'où le lien est fait, la chaîne se poursuit

- On subjob OK : si aucune erreur n'est survenue dans le groupe de composants (ou subjob) sur lequel le lien est fait. C'est à dire le premier composant d'un groupe de composants (un groupe de composants est matérialisé par un cadre gris qui regroupe les composants. D'ailleurs ce carré a un petit plus vert en haut à droite pour réduire le groupe) la chaïne se continue.

La sortie "On subjob OK/KO" ne peut être mise que sur le premier composant d'un subjob ou sur un composant unique (qui forme a lui seul un groupe)

Créé le 28 avril 2009  par Jean-Sébastien DARGES

Cliquez sur le bouton "Enable/Disable expression filter" (flèche blanche vers la droite avec un plus vert) dans la sortie en question. Ajouter ensuite la condition dans le champ qui s'affiche à cet effet.

Vous pouvez maintenant envoyer les données filtrées dans cette sortie et activer les rejets dans une autre sortie en cliquant sur le bouton "Enable/Disable output reject" (flèche orange) de la sortie des rejets.

Créé le 19 mai 2009  par Jean-Sébastien DARGES

Pour faire une condition dans un composant Talend, comme dans un tMap, il suffit d'utiliser des conditions ternaires comme ceci :

Pour une variable de type String
Sélectionnez
row1.monChamp.equals("forum developpez")?"OK":"KO"

Cela signifie que si mon champ est égal à la chaine de caractère "forum developpez", le champ cible aura pour valeur "OK" sinon il aura pour valeur "KO".

Pour une variable de type int/Interger
Sélectionnez
row1.monChamp == 2009 ? 1 : 0

Cela signifie que si mon champ est égal à 2009, le champ cible aura pour valeur 1 sinon il aura pour valeur "KO".

Ceci est très utile dans un tMap pour donner une valeur à un champ en sortie suivant les champs en entrée.

Créé le 28 avril 2009  par Jean-Sébastien DARGES

Talend fournit la fonction Relational.ISNULL() très pratique pour savoir si un champ est nul ou pas.

Utilisation :

 
Sélectionnez
Relational.ISNULL(row1.monChamp)?"nul":"pas nul"

Cette méthode peut être couplée avec la fonction equals pour vérifier si le champ n'est pas vide :

Si le champ est de type String
Sélectionnez
(!Relational.ISNULL(row1.monChamp) && !row1.monChamp.equals("")) ?"pas nul et pas vide" :"nul ou vide"
Créé le 28 avril 2009  par Jean-Sébastien DARGES

PUBLIC EXPERT recommandé.

Chose à faire avant tout : vérifier que le composant que vous voulez créer n'a pas déjà été développé par quelqu'un d'autre (ça vous évitera des heures de développement ) en vous rendant à l'adresse suivante. Si il existe déjà suivez la procédure d'ajout de nouveau composant à l'adresse suivante. Sinon suivez le point suivant.

Maintenant que vous êtes sûr que personne n'a fait le composant en question, il vous faut définir un dossier où seront sauvegardés les composants que vous développerez. Pour cela cliquez successivement dans le menu Window > Preferences > "Talend Component Designer". Indiquez maintenant un dossier de sauvegarde.

Maintenant vous pouvez accéder à la fenêtre qui vous permettra de développer vos composant en cliquant sur "Window > Perspective > Design Worspace". Dans l'onglet "Component Designer", cliquez droit sur le projet "COMPONENT_PROJECT > New > New Component". Ensuite laissez vous guider.

Créé le 6 mai 2009  par Jean-Sébastien DARGES

La partie "Metadata" de l'onglet "Repository" permet de faire ça simplement.

Si c'est un schéma de base de données, il faut créer une connexion à votre base dans "Db connection". Ensuite, faite un clique droit sur cette nouvelle connexion et sur "Retrieve schema". Vous aurez alors à choisir quel schéma des tables proposées, vous souhaitez récupérer.

Vous pouvez faire de même pour les fichiers de type "Delimited", "Positional"...

Si vous voulez utiliser un schéma à la fois pour un fichier, un schéma de composant, une BDD... utilisé le "Metadata" "Generic schemas".

Ensuite pour utiliser ces schémas, il vous suffit de choisir un schéma de type "Repository" dans votre composant.

Créé le 7 mai 2009  par Jean-Sébastien DARGES

Cliquez successivement sur "Window > preferences". Dans la fenêtre des préférences Talend, cliquez sur "Talend > Specific Setting > Default Type and Length".

Vous pourrez alors configurer le type et la longueur des champs par défaut pour les schémas de tous les jobs de votre projet.

Version : Testé en version 3.1.0

Créé le 19 mai 2009  par Jean-Sébastien DARGES

On aurait tendance à utiliser :

 
Sélectionnez
"\\serveur\folder\fileName.extension"

Mais en fait il faut échapper les back slash

 
Sélectionnez
"\\\\serveur\\folder\\fileName.extension"

Ou encore remplacer les back slash par des slash

 
Sélectionnez
"//serveur/folder/fileName.extension"

Exemple :

 
Sélectionnez
"//localhost/partage/monFichier.txt"
Mis à jour le 7 janvier 2012  par Jean-Sébastien DARGES, Benoît COURTINE

Il suffit d'utiliser la variable globale "projectName".

Par exemple dans le contenu d'un tMsgBox :

 
Sélectionnez
"Le nom du projet courant est : " + projectName
Créé le 19 juin 2009  par Jean-Sébastien DARGES

Il suffit d'utiliser la variable globale "jobName".

Par exemple dans le contenu d'un tMsgBox :

 
Sélectionnez
"Le nom du job courant est : " + jobName
Créé le 19 juin 2009  par Jean-Sébastien DARGES

Il faut supprimer les anciennes classes dans la corbeille de Talend AVANT de les générer à nouveau.

Mis à jour le 4 mai 2010  par Mselle

Le composant propose différents affichages avec des retours bien particulier à savoir :

1. "OK" : popup avec un message personnalisé et un bouton "OK"
Retour :

  • 1 : qu'on faire la fenêtre ou qu'on appuie sur le bouton "OK", le retour est 1 car c'est juste une popup d'information

2. "OK et annuler" : popup avec un message personnalisé et deux boutons : "OK et "Cancel"
Retours :

  • 0 : si appuie sur le bouton "OK"
  • 1 : si appuie sur le bouton "Cancel"
  • -1 : aucune réponse (fermeture de la fenêtre)

3. "Abandonner, Réessayer et Ignorer" : popup avec un message personnalisé et trois boutons : "Abort", "Retry" et "Cancel"
Retours :

  • 0 : si appuie sur le bouton "Abort"
  • 1 : si appuie sur le bouton "Retry"
  • 2 : si appuie sur le bouton "Cancel"
  • -1 : aucune réponse (fermeture de la fenêtre)

4. "Oui, Non et annuler" : popup avec un message personnalisé et 3 boutons : "Yes", "No" et "Cancel"
Retours :

  • 0 : si appuie sur le bouton "Yes"
  • 1 : si appuie sur le bouton "No"
  • 2 : si appuie sur le bouton "Cancel"
  • -1 : aucune réponse (fermeture de la fenêtre)

5. "Oui et Non" : popup avec un message personnalisé et 2 boutons : "Yes" et "No"
Retours :

  • 0 : si appuie sur le bouton "Yes"
  • 1 : si appuie sur le bouton "No"
  • -1 : aucune réponse (fermeture de la fenêtre)

6. "Réessayer et annuler" : popup avec un message personnalisé et 2 boutons : "Retry" et "Cancel"
Retours :

  • 0 : si appuie sur le bouton "Retry"
  • 1 : si appuie sur le bouton "Cancel"
  • -1 : aucune réponse (fermeture de la fenêtre)

7. "Question" : popup avec une question personnalisé et un textBox pour récupérer la réponse faite par l'utilisateur
Retours :

  • null : si appuie sur le bouton "Annuler" ou fermeture de la fenêtre
  • valeur entrée : si appuie sur le bouton "OK"

Enfin pour récupérer ses valeurs, il suffit d'utiliser la méthode suivante dans la suite du job :

 
Sélectionnez
((String)globalMap.get("tMsgBox_[number]_RESULT"))

Exemple :

 
Sélectionnez
((String)globalMap.get("tMsgBox_1_RESULT"))

Si ce n'est pas une question, vous pouvez toujours changer le type de la donnée retourné mais pas en "castant" l'objet en Integer car ça ne fonctionnera pas. Il faut utiliser la méthode Integer.parseInt(String) :

Mis à jour le 4 mai 2010  par Jean-Sébastien DARGES

Lorsqu'on cherche à utiliser Talend avec le SGBD Ingres, il y a certains messages d'erreurs du genre :

 
Sélectionnez
com.ingres.gcf.util.SqlEx: Connection aborted due to communications protocol error.

Comme le dit le bug trackerAccès au BugTracker 4589 de Talend, il faut remplacer tous les fichiers iijdbc.jar trouvés dans les répertoires Talend (il y en a plusieurs) par une version plus récente (téléchargée gratuitement via http://esd.actian.com/Accèder à Actionx).

Mis à jour le 7 janvier 2012  par Jean-Pierre Zuate

Les environnements de développement sont parfois différents de l'environnement de production. De ce fait, les accents peuvent être interprétés différemment (problème de charset). Il est donc nécessaire de palier à ce problème en remplaçant systématiquement les caractères accentués par la valeur équivalente en UNICODE. Ce remplacement doit être réalisé dans les requêtes SQL, composants Java, etc…absolument partout dans vos jobs Talend à moins que vous soyez sûr à 150% que votre environnement de test et le même que l'environnement d'exploitation.

Voici un tableau non exaustif récapitulatif des équivalences en Unicode :

Exemple d'utilisation :

Caractère Unicode
à \u00e0
â \u00e2
ä \u00e4
ç \u00e7
è \u00e8
é \u00e9
ê \u00ea
ë \u00eb
î \u00ee
ï \u00ef
ô \u00f4
ö \u00f6
ù \u00f9
û \u00fb
ü \u00fc
 
Sélectionnez
String maVar = "Connexion impossible au sch\u00e9ma DWH";

Voici la liste exaustive des équivalences unicodes cliquez sur ce lien

Vous pouvez également utiliser l'API Apache commons comme suivant :

 
Sélectionnez
StringEscapeUtils.escapeJava()
Mis à jour le 7 janvier 2012  par Jean-Sébastien DARGES

Pour arrondir un champ BigDecimal à l'entier supérieur, il suffit d'utiliser la méthode setScale()

Exemple :

 
Sélectionnez
row1.monChampBigDecimal.setScale(BigDecimal.ROUND_HALF_UP)
Mis à jour le 7 janvier 2012  par atb

En fait il y a une option qui n'est pas cochée par défaut dans les paramètres du Designer Talend et qui permet de propager les changements de contexte dans un groupe de contexte comme par exemple son type ou une valeur mais également d'enlever ou d'ajouter une variable dans tous les jobs en une seule passe.

Pour activer l'option, il faut cliquer successivement sur "Fenêtre > Préférences". Développer ensuite l'arborescence "Talend > Performance". Il suffit maintenant de cocher l'option "Propager les changements d'ajout/suppression de variables dans un contexte du référentiel".

Mis à jour le 7 janvier 2012  par Jean-Sébastien DARGES

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2012 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.