lundi 17 décembre 2012

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

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


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

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

3. Job Talend Open Studio

On commence par créer un job vide.
  • 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

4. 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 :

/**
     * 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.

5. 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 :
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
 
6. 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 voir sur ce même blog les autres tutos, sinon je vous donne rendez-vous pour un prochain tuto cette fois-ci sur comment utiliser les variables de contexte dans Talend.

1 commentaire:

  1. I really appreciate information shared above. It’s of great help. If someone want to learn Online (Virtual) instructor lead live training in talend , kindly contact us http://www.maxmunus.com/contact
    MaxMunus Offer World Class Virtual Instructor led training on TECHNOLOGY. We have industry expert trainer. We provide Training Material and Software Support. MaxMunus has successfully conducted 100000+ trainings in India, USA, UK, Australlia, Switzerland, Qatar, Saudi Arabia, Bangladesh, Bahrain and UAE etc.
    For Demo Contact us.
    Sangita Mohanty
    MaxMunus
    E-mail: sangita@maxmunus.com
    Skype id: training_maxmunus
    Ph:(0) 9738075708 / 080 - 41103383
    http://www.maxmunus.com/


    RépondreSupprimer