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

Mustapha EL HASSAK

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

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

- Auteur : Mustapha EL HASSAK

- Parution : 3 août 2011

- 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 de données

- III. Job Talend Open Studio

- IV-A. Création du job statique

- IV-B. Transformation du job en un job dynamique

- V. Conclusion

- VI. Remerciements

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

II - La source de données

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

CREATE TABLE CLIENT(
CODE VARCHAR2(100 BYTE),
NOM VARCHAR2(100 BYTE),
PRENOM VARCHAR2(100 BYTE)
);

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 :

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 :

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

- Après on va sur les propriétés du composant "tOracleInput" et on modifie la requête SQL qu'il utilise.

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

- Notre job est fin prêt à l'emploi. On lance l'exécution et voilà le résultat :

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.

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é :" ;

- finalement, on lie le composant "tMsgBox" au composant "tOracleInput" par un lien de type déclencheur "OnSubjobOk".

Notre job prend cette allure :

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 :

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

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

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