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.
1. 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 le tutoriel précédent.
2. La source de données
La source de données a été créée par le script suivant :
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
';
3. 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.
3.1 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 :
3.2 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.
4. Conclusion
Voilà c'est tout, maintenant vous êtes capable de créer n'importe quel type de job dynamique avec Talend il suffit de suivre ce tuto Step by Step. Prochainement je vous parlerai de comment créer une routine avec l'ETL Talend Open Studio, vous allez voir c'est plus facile que ce que vous pensez, en plus c'est très très utile si vous voulez créer des traitements spécifiques pour vos jobs.
Bonjour, j'ai beaucoup aimé vos tutoriaux :) Je voudrais vous demander comment on crée un job de mise à jour? Au fait je crée les jobs et chaque fois que j’insère une ligne ou plusieurs dans ma base opérationnelle je dois recréer une connexion.
ReplyDeleteComment créer un job de mise à jour? et merci d'avance.
Bonjour,
DeleteEn fait cela dépend de ce que tu veux dire par un job de mise à jour. Si ça veut dire que tu veux créer un job qui permettra d'insérer une ligne dans la base si cette ligne n'existe pas et la modifier si elle existe alors là il faut jouer sur les options de ton composant de sortie (par exemple ton tOracleOutput), tu mets dans les options d’insertion de ligne "Update or Insert". Sinon si tu veux parler de créer une nouvelle version de ton job alors là tu fais un clique droit sur ton job, tu cliques sur modifier les propriétés du job puis tu augmentes la version.
J’espère que j'ai répondu à ta question. Sinon essai de la reposer d'une autre façon.
merci pour le tuto, je commence juste à m'autoformer et c'est génial de trouver ces petit bijoux !! Merci encore
ReplyDeleteMerci, et bonne chance pour la suite.
Delete