Téléchargez aux formats PDF ou lisez en ligne sur Scribd
(0410772028 13:16 ‘Les bonnes pratiques Talend
> nextdecision &
@ Accueil / Wiki / Les bonnes pratiques Talend
Les bonnes pratiques Talend
QUELQUES REGLES A OBSERVER POUR BIEN PRATIQUER TALEND
Notre conseil pour bien pratiquer Talend : rester le plus simple possible !
* Nommer les composants, mettre des titres et des notes
* Attention dla lisibilite
+ Eviter la barre de défilement horizontale, aligner les sous-jobs
+ Au-deld dune trentaine de composants, se poser Ia question de Ia division en plusieurs
jobs (pére-fils?)
Attention G l'organisation et aux noms des dossiers contenant vos jobs
LES COMPOSANTS TALEND LES PLUS UTILISES
tMap : C'est le composant le plus important et le plus puissant de Talend. II permet de
réaliser les multi opérations (jointures, transformations, filtres, rejets...) Les expressions
utilisées sont en Java.
NB: IF THEN ELSE n'est pas autorisé !
Le nombre dentrées et sorties n'est pas limité officiellement, mais pour la maintenabilité, i!
est fortement conseillé de limiter les entrées d un ou deux, les sorties peuvent étre
nombreuses.
tAgregateRow : Ce composant regoit un flux de données et fait une agrégation basée
sur une ou plusieurs colonnes. Il permet détablir des métriques et des statistiques
basées sur des valeurs ou des calculs.
NB: Il faut faire attention ce que entrée et la sortie de Ia colonne soient identiques. Ce
composant met par défaut la premiére colonne de sortie pour toutes les autres.
Par rapport & SQL, ordre est & inverse : dabord Group By ensuite opérations
Opérations : Min, max, somme, moyenne, compter, premier, dernier, liste...
hips slwwnext-lecisionfwikibonnes-praiques-ilendi~text-iMap °43A C%27est le composant, expressions uliisées sont en Java. 19wio7r2020 13:16 Les bonnes praiques Talend
tSortRow : Ce composant trie les données dans un flux. Pour la performance du
traitement, il est conseillé dutiliser ce composant avant et aprés une agrégation.
tFilterRow : I filtre les données dans un flux. Dans Ia partie “avancé’, une expression
Java peut étre utilisée.
: La méthode simple et la méthode avancée ne peuvent pas étre cumulées.
tFlowTolterate : Ce composant ne peut étre utilisé en début de chaine. Il permet la
transformation d'une liste de valeurs en liste d’exécution. II effectue une itération sur
les données d'entrée et génére des variables globales. || est utilisé afin de lire des
données ligne par ligne.
Dans le paramétre diterate il est possible de choisir le nombre dexécutions en paralléle,
c'est de lexécution concurrentielle, ce qui permet que le traitement soit rapide. Dans ce
cas, 'exécution est aléatoire. si lordre est important pour le traitement, ne pas utiliser cette
méthode.
tlterateToFlow : Ce composant permet de transformer des données non traitables en
flux traitable. Ce composant ne peut étre utilisé en début de chaine.
tFileList : Ce composant liste les fichiers d'un répertoire donné (possibilité de masque
de fichier).
La méthode a observer est la récursivité (inclure les sous-répertoires). Ce composant est
capable dialer lire les fichiers recherchés dans tous les sous-dossiers et de les exécuter en
méme temps. C'est le parallélisme.
Il posséde des variables globales tels que :
+ CURRENT_FILE :nom du fichier courant
CURRENT_FILEPATH : nom du fichier courant ainsi que son chemin d'accés
CURRENT_FILEEXTENSION : extension du fichier courant
CURRENT_FILEDIRECTORY : répertoire du fichier courant
NB_FILE: nombre de fichiers itérés
tLogRow: (Affichage par ligne) : C'est un excellent outil de débogage. II envoie les
données vers la console.
tNote ou Note : II permet dajouter des commentaires, une présentation, liste les
@volutions du job.
NB: Le composant est “Note” mais s‘appelle en tapant “tNote’
tMemorizeRow : Ce composant mémorise une ou plusieurs lignes et permet au(x)
composant(s) suivant(s) deffectuer des opérations de votre choix sur les lignes
mémorisées. Le nombre de lignes & mémoriser doit étre mis 4 2 ou plus.
NB: En amont de ce composant, faire un tri en utilisant le composant tSortRow
hips slww.next-lecision ffwkibonnes-pratiques-ilendi~text-iMap °43A C%27est le composant, expressions uliisées sont en Java. 29(0410772028 13:16 ‘Les bonnes pratiques Talend
tAggregateSortedRow : Ce composant recoit un flux de données triées sur lequel il
effectue une agrégation basée sur une ou plusieurs colonnes.
siles données sont déja triées, les performances n’en sont que plus optimisées
tFixedFlowinput : Il permet de créer une mini table (colonne + lignes) avec des
valeurs en dur.
TALEND ET LES DIFFERENCES ENTRE TJAVA, TJAVAROW ET TJAVAFLEX
Ces 3 composants permettent linsertion de codes Java personnalisés.
Un composant Java comprend 3 parties : Begin, Main et End.
tUava : Le tJava n'a qu'un Begin donc il ne s‘exécute qu'une fois. Il ne gére pas de flux
de données (de type row) donc pas de sortie. Rattaché 4 un job ou 4 un sous-job par
un trigger (onComponentOk ou onSubjobOk)
tJava Row : Le tJava Row n'a que la partie Main.
tJavaFlex : Le tavaFlex est similaire au tlava. La difference est qu'il crée
automatiquement un flux de données en sortie @ partir du flux de données en entrée
(done pas besoin d'initialisation). Ce composant a le begin, main et end. II peut donc
6tre mis seul ou en début de job, ou méme au milieu en prenant en compte le flux de
données. C'est le plus flexible des trois.
Fichiers plats : Talend lit et écrit différents types de fichiers plats tels qu’Excel, CSV,
positionnel, xml. Chaque type de fichier posséde deux composants spécifiques (pour lire «
Input », pour écrire « Output »).
BDD : Talend lit et écrit les différents types de BDD tel que MSSQL, MYSQL, ORACLE. Les
composants spécifiques principaux sont la connexion a la base de donnée, la lecture,
'écriture et le commit / roll back.
TALEND ET QUELQUES NOTIONS JAVA
égal
: Différent
= : Déclaration ou valorisation d'une variable en Java
X00
J00 ou xxxx > 100 ou .90KK < 100 : Test sur Ia valeur d'un champ numérique
“toto”.equals(“xxx’) / !"toto”.equals ("xxx") : Test dégalité / inégalité dun champ de type
String
hips slww.next-lecision ffwkibonnes-pratiques-ilendi~text-iMap °43A C%27est le composant, expressions uliisées sont en Java. 39(0410772028 13:16 lend
null ow 00x != null
Null (Xxxx) /! Relational.isNull(Xxxx) : Test de Ia nullité ou non d'un champ.
00
Relations
%00.isEmpty() / ! 000.isEmpty() : Teste si le champ est vide ou pas (vide <> null: un
champ peut étre non null mais vide)
Xoo. starts With ("xx") / ocx.endswith ("xx") : Commencer / Terminer par xxx, LIKE en SQL
(vx%e") SQL ("ex")
Xocx.contains ("xx") : Contenir xxx, LIKE en SQL ("%xx%")
Boolean : True/ False (si la valeur est en string) ; 1/0 (si la valeur est en int)
EXEMPLES DE CONVERSION TALEND
Integer.valueOf(“xx0xx") : Conversion dun string en int
String.valueOf(x00x) : Conversion d'un int en string
variable.toString() ou x00 ‘onversion d'un int ou float en string
Float.parseFloat("xxxx") : Conversion d'un char en float
BigDecimal ("xxxx" ou xxxx) : Conversion en BigDecimal (de string ou integer)
TalendDate.parseDate("dd/MM/yyyy","01/01/2020") : Conversion d'un string en date en
précisant le format du string
TalendDate.formatDate(“dd", XXX) : Afficher uniquement le jour; II faut que XXX soit au
format Date (via parseDate si besoin). La sortie est au format string.
StringHandling.LEFT (x00, y) / StringHandling.RIGHT (xoo0,y) : Récupération des Y
caractéres de la chaine en partant de la gauche ou de la droite. Cette fonction propre a
Talend protége des null.
oa. substring(0,3) : Du premier au troisiéme caractére d'une chaine.
Arrays.asList("X","Y").contains(xxxx) : Champ xxx dans Ia liste. Nécessite un « import
jova.utiLArrays; » dans Advanced settings d'un tJavaRow, par exemple.
hips slww.next-lecision ffwkibonnes-pratiques-ilendi~text-iMap °43A C%27est le composant, expressions uliisées sont en Java. 49owio7/2029 13:16 Les bonnes pratiques Talend
StringHandling.CHANGE(chaine ,"caractére & remplacer”, “caractére remplagant”)) :
Substitution d'un caractére dans une chaine. Cette fonction propre a Talend protége des
null,
Math.abs(xxx) : Valeur absolue version Java (+ fiable), Talend retourne un Double dans
tous les cas (10.0).
TALEND ET LES TESTS TERNAIRES
2000 != null ? X90cx: null: (Test) ? Valeur si vrai : Valeur si faux
LES EXPRESSIONS REGULIERES (REGEX) DANS TALEND
Ces expressions servent a définir des modéles pour la recherche et la manipulation de et
dans des strings.
Exemple pour enlever les caractéres d'un string
"I2zer45aaz43"replaceall("\\D+","); Résultat : 124543
LES ROUTINES DE TALEND
Ce sont des classes java. Elles sont utilisées pour centraliser les transformations complexes
et répétitives. Le code est soit développé directement sous ETL, soit importé avec des Jars
externes (library java). La routine est appelée par IETL, sous la forme classe.methode
(paramétre).
LES VARIABLES DANS TALEND
LES VARIABLES GLOBALES
Elles sont liées 4 un composant et générées automatiquement en fonction du type de
composant. Elles ne sont accessibles que dans le job courant. (scope = portée). Elles
permettent daccéder a l'état du composant lié :
Nom du fichier / Numéro de l'itération courante / message d’erreur
‘Syntaxe d'un appel 4 une variable :
hips slww.next-lecision ffwkibonnes-pratiques-ilendi~text-iMap °43A C%27est le composant, expressions uliisées sont en Java. 59(0410772028 13:16 ‘Les bonnes pratiques Talend
(Type)globalMap.put(‘nom de variable’, “la variable’); --> déclaration d'une variable globale
(String)system.out.printin(((String)globalMap.get("nom de variable’))); --> récupération de
la variable globale déclarée
VARIABLES DE CONTEXTE CONTEXT.XXXX
Une variable de contexte peut avoir différentes valeurs selon le contexte (Dev, R7, PDR). Elles
permettent d'exécuter le méme job dans différents contextes / environnements. Elles
peuvent étre utilisées dans tout le projet en activant “Transmettre tout le contexte” dans les
tRunJob. II est possible de revaloriser la variable dans un job.
LES MESSAGES D'ERREURS FREQUENTS DANS TALEND
Data Truncation : La longueur des données dun champ dépasse sa taille. En général, Talend
indique le champ concerné, mais pas dans quelle ligne.
java.lang.NullPointerException : Cela se produit généralement lors de l'utilisation d'un test
ternaire dans un tMap et que le cas de nullité de objet en entrée n'a pas été traité.
java.lang.NumberFormatexception:null :
+ Siconversion en nombre dune chaine de caractéres qui ne représentent pas un
nombre.
* Si l'objet est null : remplacer le null par une valeur par défaut (0).
+ Sila valeur est divisée par 0.
put string :
* Sile format ne correspond pas (int dans string par exemple).
* Sil'en-téte du fichier intégré est traité comme une ligne. (nb ligne entéte)
* Sile float (12.3) est écrit avec (12,3) : La virgule n'est pas acceptée.
NB: Cette erreur n'empéche pas le traitement, il saute la ligne qui pose probléme et
continue son traitement.
Retour au Wiki
Vous recherchez des consultants experts en Talend? Next Decision est ld ! alors
Contactez-nous!
BESOIN D'UNE REPONSE RAPIDEMENT ?
Laissez-nous vos coordonnées et nous vous rappellerons sous 24 heures.
hitpsslww.next-lecision ffwikibonnes-pratiques-ilendi~text-iMap °43A C%Z7est le composant,expressions ullisées sont en Java. 69(0410712028 13:16 ‘Les bonnas pratiques Talend
NOM (OBLIGATOIRE)
PRENOM (OBLIGATOIRE)
TEL (OBLIGATOIRE)
MAIL (OBLIGATOIRE)
Etre rappelé
NOS AGENCES
Nantes
Paris
Lille
Lyon
Bordeaux
Ancenis
Rennes
Angers
Brest
Montpellier
Toulouse
hips slww.next-lecision ffwkibonnes-pratiques-ilendi~text-iMap °43A C%27est le composant, expressions uliisées sont en Java.
719(0410712028 13:16
BREST
ones
>
pe Pres
NANTES
- >
TOULOUSE
>
MONTPELUER
Navigation
Z-NOUS
Mentions
gal
Nos métiers
Le décisionnel
Big Data
MDM
Elaboration bud
hips slww.next-lecision ffwkibonnes-pratiques-ilendi~text-iMap °43A C%27est le composant, expressions uliisées sont en Java.(0410772028 13:16
Les éditeurs
hitps:luwunext-lecisionfiwikibonnes-pratiques-tlendit~text
Les bonnas pratiques Talend
lap %63A C%427est le composant expressions utlisées sont en Java.
99