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 job 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 :

image du fichier texte source

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 :

image du fichier texte destination

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 tutorieltutoriel.

  • 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 "\n".
  • On remplit le champ "séparateur de champs" par ";"
  • Puis on clique sur le bouton "..." pour éditer le schéma comme ci-dessous :
image du composant source
image du schéma source
  • 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 :
image du composant destination
image du schéma destination

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 :

image du job

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"
image de création de la routine
  • On remplit les informations jugées nécessaires.
  • Puis on clique sur "Terminer".
image des informations de la routine

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 :

 
Sélectionnez

			/**
				 * 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".
image expression colonne
  • La fenêtre "Constructeur d'expression" s'affiche.
  • Pour faire appel à notre routine on tape le code suivant :
 
Sélectionnez

			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èse, 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.
image constructeur expression
  • Ceci fait, on clique sur "Ok" pour fermer le constructeur d'expression, puis sur "Ok" pour fermer la fenêtre de Mapping.
image mapping final
  • Notre job est maintenant terminé on peut le lancer pour vérifier le résultat.
image résultat final

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_jeanjacques_jean pour la relecture orthographique.