Création de routines avec l'ETL Talend Open Studio

Mustapha EL HASSAK

Ce tutoriel explique la création et l'utilisation des routines de l'ETL open source Talend Open Studio dans un job simple. Commentez

- Titre : Création de routines avec l'ETL Talend Open Studio

- Auteur : Mustapha EL HASSAK

- Parution : 2 août 2011

- Mise à jour : 26 mai 2020

- Licence : Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.

Sommaire

- I. Introduction

- II. La source et la destination de données

- III. Job Talend Open Studio

- IV. Création de la routine

- V. Utilisation de la routine dans le job TOS

- VI. Conclusion

- VII. Remerciements

I - Introduction

Le document suivant nous présente les étapes de création d'une routine sous Talend Open Studio, pour cela on créera un job très simple qui lira un fichier texte avec trois colonnes de type float : jour, mois et année; et le transformera en un fichier avec une seule colonne de type date sous la forme dd/mm/yyyy.

II - La source et la destination de données

Avant toute création de jobs, on présentera la source et la destination de données.

Pour la source il s'agit d'un fichier texte comportant trois colonnes délimitées par des points virgules, ces trois colonnes seront lues par notre job comme des floats.

Notre source ressemblera à ça :

Quant à la destination, il s'agit là aussi d'un fichier texte, mais cette fois-ci avec une seule colonne de type date sous la forme dd/mm/yyyy.

Notre destination ressemblera à ça :

III - Job Talend Open Studio

On commence par créer un job vide. Pour toutes informations sur la création de job vous pouvez vous référer à mon autre tutoriel.

- On glisse un composant « tFileInputDelimited » depuis la palette.

- Dans l'onglet « Component », on définit le chemin du fichier d'entrée.

- On remplit le champ « séparateur de lignes » par «

- ».

- On remplit le champ "séparateur de champs" par ";"

- Puis on clique sur le bouton "…" pour éditer le schéma comme ci-dessous :

- Après ça on glisse un composant "tFileOutputDelimited" depuis la palette. Ce dernier représentera notre sortie.

- Dans l'onglet "Component", on définit le chemin du fichier de sortie.

- On remplit le champ "séparateur de lignes" par "\n"

- Puis on clique sur le bouton "…" pour éditer le schéma comme ci-dessous :

Ceci fait on ajoute notre dernier composant "tMap" qui va servir à faire le lien entre l'entrée et la sortie, mais aussi c'est lui qui va nous permettre de faire appel à la routine que nous allons créer.

On lie le composant d'entrée et le "tMap" avec un lien de type "main", puis le "tMap" et le composant de sortie avec un lien de type "main" tout en récupérant le schéma de ce dernier. On obtient alors un job qui ressemble à ça :

IV - Création de la routine

La création de routine Talend Open Studio se fait dans l'onglet "Référentiel" sous l'arborescence "Code".

- On fait un clic droit sur "Routines".

- Puis on clique sur "Créer une routine"

- On remplit les informations jugées nécessaires.

- Puis on clique sur "Terminer".

Une fenêtre s'affiche avec une classe Java portant le nom de la routine créée, c'est à l'intérieur de cette classe qu'on va pouvoir créer nos routines. D'ailleurs il y'a une classe exemple "helloExample" qui a été créée par défaut par TOS, on peut la supprimer si on veut. Ensuite on colle le code suivant :

/**
* threefloatToDate: return date.
*
*
* {talendTypes} float
*
* {Category} Conversion
*
* {param} Float(12), Float(8), Float(1974) input: The three floats needed
* to be converted.
*
* {example} threefloatToDate(12,8,1974) # La date : 12 Aout 1974.
*/
public static Date threefloatToDate(float j, float m, float a) {
if (j == 0 || m == 0 || a == 0)
return null;

Calendar gc = Calendar.getInstance();
gc.set(Calendar.DATE, (int) j);
gc.set(Calendar.MONTH, (int) m - 1);
gc.set(Calendar.YEAR, (int) a);

return gc.getTime();

}

Ce code représente une fonction Java normale qui prend comme argument trois floats et qui retourne une date. Ce code se compose de deux parties, une partie commentaire utilisée par Talend pour l'affichage de l'aide sur l'utilisation de la fonction, cette partie n'est pas obligatoire, mais je vous conseille de la remplir quand même, pour savoir comment la remplir, inspirez-vous de la fonction "helloExample" générée automatiquement après la création de la routine. Quant à la deuxième partie, c'est le code Java proprement dit, sur cette partie il n'y a rien à expliquer, c'est du Java pur et dur.

Ceci fait, il suffit maintenant de sauvegarder puis fermer la routine.

V - Utilisation de la routine dans le job TOS

La création de la routine étant terminée on peut maintenant lui faire appel dans notre job.

- On retourne sur notre job et on double-clique sur le composant "tMap".

- On va sur la partie de droite, dans le schéma de sortie on clique sur la partie "Expression" de la colonne "dateComplete".

- La fenêtre "Constructeur d'expression" s'affiche.

- Pour faire appel à notre routine, on tape le code suivant :

routines.maroutine.threefloatToDate(row1.jour, row1.mois, row1.annee)

Ce code se compose de la façon suivante :

- "routines", cette partie est fixe ;

- "maroutine", le nom de la routine créée ;

- "threefloattodate", le nom de la fonction créée à l'intérieur de la routine ;

- Ce qu'il y a entre parenthèses, ce sont les arguments de la fonction. Il s'agit là de lui faire passer les colonnes récupérées depuis le fichier d'entrée.

- Ceci fait, on clique sur "OK" pour fermer le constructeur d'expression, puis sur "OK" pour fermer la fenêtre de Mapping.

- Notre job est maintenant terminé on peut le lancer pour vérifier le résultat.

VI - Conclusion

Merci d'avoir lu tout ce document :), j'espère qu'il a pu aider quelques-uns de ses lecteurs, au moins pour les débutants sur TOS. Ceci dit pour les gens qui souhaiteraient apprendre encore plus je leur conseille d'aller sur le site officiel de Talend où il y'a plusieurs autres tutos très intéressants, sans oublier le forum sur Developpez où vous pouvez poser toutes vos questions !

VII - Remerciements

Un grand merci à jacques_jean pour la relecture orthographique.