Il m’arrive d’intervenir sur le forum developpez.net et j’ai remarqué que la différence entre une transformation et une tâche dans PDI ne paraissait pas évidente pour les débutants. J’ai décidé donc de réaliser un petit papier sur cette question 🙂
Pentaho Data Integration manipule 2 sorte de traitements :
–> les flux (streams en anglais) qui correspondent par exemple aux enregistrements dans une base de données, liste de fichiers,etc. Ces flux sont gérés dans une transformation.
Exemple d’une transformation classique:
Extraction depuis une BdD –> Filtrage –> Alimentation fichier Excel
Dans cet exemple, les lignes sont extraites d’une base de données grâce à l’étape « Extraction depuis table ». Cette étape est la source du flux. Dans la suite ces lignes seront manipulées pas une étape filtrage qui va ne va diriger vers l’étape « Alimentation fichier Excel » (étape cible du flux) que certaines lignes. Notons que dans mon exemple, une seule étape produit du flux.
Dans une transformation, toutes les étapes ne peuvent produirent de lignes, il existe des étapes dédiées à cela. Ceux sont les étapes dans la catégorie « Extraction ».
Si vous n’avez donc pas des étapes productrices de flux, votre transformation ne marchera pas (ou plutôt finira sans avoir commencé 🙂 ).
Il y a souvent une question qui renvient sur le forum de PDI à propos de l’exécution de procédure stockée. Typiquement, vous pouvez avoir une procédure qui ne nécéssite pas d’arguments; la logique voudra donc que l’on puisse utiliser directement l’étape « Appel Procédure Stockée (BDD) ». Mais cela ne marchera pas car comme on l’a précisé plutôt cette étape ne produit pas de flux (elle le modifie). Elle a besoin qu’au moins une ligne arrive à elle! Il suffit donc de placer une étape « Génération Lignes » juste avant 🙂
Notons que l’étape « Appel Procédure Stockée (BDD) pourra s’exécutée toute seule à partir de la version 3.1.
Ainsi, pour manipuler les flux, on utilise des étapes liées entre elles grâce à des liens (en vert dans notre exemple).
Chaque étape est dédiée à une fonction (extraction, alimentation, recherche,…). Il y a les étapes qui produisent des flux (Extraction depuis BdD, fichier,…), d’autres qui les manipulent (Ajout constante, agrégation, tri,…) , etc.
Les lignes seront donc « baladées » d’une étape à une autre et chacune des étape appliquera au flux d’entrée une action de transformation (filtrage, agrégation, ajout d’une constante, blocage du flux,…) pour finir vers une étape cible -ou destinatrice (étapes alimentation).
Toutes les étapes d’une transformation sont lancées en parallèle (multi thread). En effet, c’est une réalité très importante dans les transformations! Si votre étape n’est pas censée recevoir des lignes d’une autre étape, elle démarrera et s’exécutera indépendemment des autres étapes! Ce n’est pas le cas de notre exemple précédent (les étapes filtrage et alimentation fichier Excel attendra des lignes respectivement de l’étape « Extraction depuis table » et « Filtrages lignes »).
Un exemple typique pour illustrer mes propos c’est l’utilisation des étapes « Récupération Variables » et « Récupération Variables » dans la même transformation pour créer une variable et s’en servir.
En effet, imaginez que je souhaites créer une varible (Nom) et l’utiliser dans la même transformation. Toutes les étapes étant exécutées en parallèle, l’étape « Récupération Variables » va essayer de récupérer la valeur de la variable et ne trouvera dans la plupart des cas rien car l’étape « Création de variables » s’est lancée juste après (mais elle peut se lancer avant aussi). Donc vous ne pouvez pas garantir l’ordre d’éxécution: dans ce cas, il est impératif de séparer la création et l’utilisation des variables dans des transformations séparées (on utilisera des entrées tâches pour cela – voir plus loin-.
–> Les tâches elles permettent le séquencement des actions.
Exemple:
Je démarre –> je télécharge des fichiers via FTP — Si OK –> je traite les fichiers — Si NOK –> j’envoi un mail d’erreur.
Une tâche manipule des entrées tâches (équivalents des étapes dans les transformations), mais une entrée tâche a un résultat binaire, ou précisemment l’exécution d’une entrée tâche donne une résultat binaire. Ensuite, il suffit de gérer ces états :
-Succès (on poursuit avec les flèches vertes)
– Echec (on poursuit avec les flèches rouges).
A un instant , une seule entrée tâche est exécutée!! (ce qui diffère des transformations ). Notons toutefois que le version 3.1 permet l’exécution en parallèle.
Il existe une palette d’entrées tâches (récupération/envoi de fichiers via FTP, SFTP, envoi de courriels,etc.) et cette liste est constamment mise à jour. Une transformation peut être exécutée dans une tâche (voir exemple ci-dessus) et également une tâche peut être lancée depuis une autre tâche comme le décrit le modèle conceptuel simplifié de PDI.
L’état final d’une tâche est le status (succès ou échec) de la dernière entrée tâche exécutée.
Voila j’ai un peu fait le tour. J’espère que j’ai été assez clair 🙂
A+
Samatar
bonjour, ca fait quelques jours je suis en train chercher le documentation qui expliquer en transformation sur pentaho data integration. votre dossier est très bien , mais je suis vraiment debutante, donc je me suis encore planté sur transforamtion. vous aprennez comment PDI? est ce que il y a un moyen qu’on peut aprendre plus en ordre? sur le site officel pentaho, je suive les guides mais toujours pas très claire. merci d’avance
haihe
en fait je suis en stage et mes collègues ne connaissons pas pantaho, et moi je suis une étrangere donc un peu dur mettre les choses en ordre. je vai laisser mon adresse email au cas ou vous passez encore ici et si vous voulez vous pouvez me coantacter . helene0618@hotmail.com
Vraiment très intéressant. J’avais complètement zappé les tâches qui s’avèrent diablement utiles.
Bonjour,
je ne vois pas le module « récupération de fichiers via FTP » dans PDI, a-t-il été renommé, cela se fait-il d’une autre manière maintenant ?
Merci d’avance pour votre aide,