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

Création de job dynamique avec l'ETL Talend Open Studio

Ce tutoriel va nous présenter comment réaliser un job dynamique, en fait on va créer un simple job qui lancera une requête de type "select" sur une table d'une base de données Oracle, la particularité de cette requête c'est qu'elle contiendra une partie dynamique saisie par l'utilisateur final. 2 commentaires Donner une note à l´article (5)

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. Introduction

L'article suivant nous présente comment créer pas à pas un job assez simple qui lancera une requête "select" sur une base de données Oracle, ensuite nous allons transformer ce job statique en un job dynamique dont la condition "where" changera selon les données entrées par l'utilisateur. Pour récupérer l'entrée de l'utilisateur on utilisera le composant "tMsgBox".

Avant de commencer je tiens à préciser qu'on n'abordera pas dans ce tutoriel le détail de création de job sous Talend vu que ça a été discuté dans cet autre tutorieltutoriel.

II. La source de données

La source de données a été créée par les deux scripts suivants :

 
Sélectionnez
CREATE TABLE CLIENT(
       CODE VARCHAR2(100 BYTE),
       NOM VARCHAR2(100 BYTE),
       PRENOM VARCHAR2(100 BYTE)
       );
 
Sélectionnez
INSERT INTO CLIENT
VALUES
  ('cli001',
   'ELHASSAK',
   'MUSTAPHA');
INSERT INTO CLIENT
VALUES
  ('cli002',
   'Esbaiss',
   'MOUAD');
INSERT INTO CLIENT
VALUES
  ('cli003', 
   'zAkI', 
   'ANASS');

Finalement on se retrouve avec le résultat suivant :

image

Le job qu'on va créer exécutera la requête suivante sur notre table, il s'agit d'une sélection de toutes les colonnes de la table avec une condition sur la colonne "CODE", par exemple :

 
Sélectionnez
SELECT code, nom, prenom
FROM CLIENT
WHERE code LIKE 'cli001'

III. Job Talend Open Studio

La création du job TOS va se dérouler suivant les étapes :

  • création du job statique ;
  • transformation du job en un job dynamique.

IV-A. Création du job statique

La création du job statique est assez rudimentaire. Après création d'un job, on glisse le schéma de notre table dans le designer, puis on choisit le composant "tOracleInput".

image
image
  • Après on va sur les propriétés du composant "tOracleInput" et on modifie la requête SQL qu'il utilise.
image
  • Ceci fait, on glisse un deuxième composant depuis la palette, cette fois-ci ce sera un composant "tLogRow" qui servira à afficher le résultat de la requête dans la fenêtre console. Ce composant est utilisé ici juste pour l'affichage. Après on lie ce dernier avec le "tOracleInput" avec un lien de type " main ".
image
  • Notre job est fin prêt à l'emploi. On lance l'exécution et voilà le résultat :
image

IV-B. Transformation du job en un job dynamique

Maintenant on passe à la partie la plus intéressante, on voit bien que ce job en plus d'être simple, est aussi assez fermé, car il va toujours renvoyer le même résultat. Pour remédier à ce problème, on va le rendre dynamique.

Pour cela on doit changer la requête SQL et remplacer la valeur 'cli001' de la clause "where" par une entrée saisie par l'utilisateur final, cette entrée sera récupérée grâce au composant "tMsgBox".

Assez de blabla, passons maintenant à la pratique. On glisse un composant "tMsgBox" depuis la palette vers le designer de notre job.

image

On modifie les propriétés composant "tMsgBox" comme suivant :

  • on met dans le champ titre "Saisie de code client" ;
  • on choisit le type de boutons "Question" ;
  • on saisit dans le champ question : "Veuillez saisir le code du client désiré :" ;
image
  • finalement, on lie le composant "tMsgBox" au composant "tOracleInput" par un lien de type déclencheur "OnSubjobOk".

Notre job prend cette allure :

image

Il ne nous reste plus qu'à modifier la requête SQL du "tOracleInput", mais comment récupérer la valeur saisie par l'utilisateur ? C'est très facile, on peut la récupérer grâce au bout de code suivant :

 
Sélectionnez
"SELECT 
CODE, 
NOM, 
PRENOM
FROM CLIENT
WHERE CODE LIKE '" 
+ ((String)globalMap.get("tMsgBox_1_RESULT")) 
+ "'"

En effet la valeur saisie par l'utilisateur final sera enregistrée par Talend automatiquement dans une variable globale propre à Talend qui porte le nom " GlobalMap" sous le nom de notre composant "tMsgBox" concaténé avec le mot "_RESULT" ,ici le nom du composant est "tMsgBox_1 " donc la variable utilisée pour le stockage sera "tMsgBox_1_RESULT", et comme la variable est de type "Object" alors il suffit de la caster vers un "String".

Voilà, le travail est terminé, on peut finalement tester notre job.

En le lançant, la fenêtre de saisie s'affiche, on tape une valeur puis on clique sur "Ok".

image

On voit bien que le résultat retourné dépend de notre saisie.

image

V. 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 !

VI. Remerciements

Un grand merci à ClaudeLELOUPClaudeLELOUP pour la relecture orthographique.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

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.