|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Futur Membre du Club
![]() Consultant informatique Inscription : septembre 2009 Messages : 26 ![]() |
Bonjour,
j'ai développé un job (qui fonctionne comme je le souhaite), celui présenté dans la capture d'écran ReunificationBranchesAvant.jpg ci-jointe. Mon soucis, comme on peut le voir dans la capture d'écran, c'est qu'après avoir rajouté plusieurs règles fonctionnelles dans le job, je me retrouve avec plusieurs output qui font le même traitement sur le même type de flux au final. Pour diverses raisons (facilité de lecture, maintenabilité,toussa toussa), je me suis donc dit qu'il valait mieux réunifier tout ça et faire un job qui aurait la tête de la capture d'écran ReunificationBranchesApres.jpg. Je pensais que le composant tUnite allait répondre à mon besoin mais après un essai rapide, je ne suis pas arrivé à l'utiliser Je ne pense pas être loin de la solution mais quelque chose me manque (un composant ou un cerveau, au choix Merci d'avance pour votre réponse, je suis plus qu'ouvert à toute demande d'information supplémentaire
|
|
|
00
|
|
|
#2 |
![]() ![]() |
Ce que tu veux faire n'est malheureusement pas possible.
Il n'est pas possible de créer un graph cyclique dans Talend : le composant tUnite ne peux unifier que deux flux qui n'ont pas de source commune. Si tu as une quantité de données raisonnable, tu peux t'en sortir en mettant en buffer les différentes sorties du tMap (tBufferOutput). Ensuite, un tBufferInput te permet de faire un traitement unique sur l'ensemble des données. Note : cette manière de faire n'est possible que pour des petits volumes de données. En effet, le composant "buffer" accumule en mémoire l'ensemble des données (ce qui provoquera une saturation de la mémoire pour un volume important).
__________________
|
|
00
|
|
|
#3 |
![]() ![]() Jean-Sébastien DARGESConsultant décisionnel Inscription : août 2008 Messages : 983 ![]() |
D'ailleurs c'est bien dommage qu'il ne le fasse pas ! Talend pourrait prendre modèle sur Informatica
![]() Tu voudrais pas nous faire un composant CyberChouan ?
__________________
Google est ton ami mais ton voisin aussi Modérateur BI Mes tutoriels - FAQ Talend - FAQ SQL*Plus Suivez @Developpez sur twitter !
|
|
|
00
|
|
|
#4 |
|
Futur Membre du Club
![]() Consultant informatique Inscription : septembre 2009 Messages : 26 ![]() |
Bonjour,
merci pour ta réponse (qui ne m'arrange pas, au demeurant ). Je pensais vraiment que ça allait être faisable, dommage.En ce qui concerne le buffer, il se trouve que j'utilise déjà des tBufferInput sur d'autres sorties pour remplir en sortie fichier XML. J'ai absolument besoin de ce buffer sinon je ne perd des lignes dans le XML de sortie. Apparemment, il n'est pas possible d'utiliser un buffer nommé et donc, par extension, il n'est pas possible d'utiliser plusieurs buffers différents, me le confirmez-vous ? Donc, en conclusion, peut-on dire que la seule façon de faire ce que je veux faire est celle présentée sur la première capture d'écran ? (en tout cas si oui, c'est très moche et on a là un très très belle limitation de Talend |
|
|
00
|
|
|
#5 |
|
Membre émérite
![]() Nicolas SaumandeArchitecte Décisionnel Inscription : février 2008 Messages : 693 ![]() |
En général, je passe par des fichiers temporaires pour gérer ce genre de cas.
Il suffit de générer un fichier par flux, et de lire ensuite chacun des fichier en utilisant un tUnite pour regrouper le tout. Nicolas |
|
|
00
|
|
|
#6 |
|
Membre régulier
![]() Etienne MenuetInscription : mai 2010 Messages : 71 ![]() |
Bonjour,
A la place des tBuffer, il y a les tHash qui s'active dans les paramètres du projet. On peut avoir plusieurs tHashOutput et tHashInput pour différents flux. Ils sont bien utile pour éviter des fichiers temporaires pour de petite volumétrie |
|
|
00
|
|
|
#7 | |
|
Futur Membre du Club
![]() Consultant informatique Inscription : septembre 2009 Messages : 26 ![]() |
Salut,
merci beaucoup pour vos réponses. J'ai choisi la solution d'emenuet : Citation:
Ci-joint la capture d'écran du job, pour information. Avant de mettre le post à "Résolu", j'ai une petite question sur l'utilisation du tHashOutput. Il y a dans les propriétés une case à cocher "Lien avec un tHashOutput". J'ai essayé de l'utiliser pour n'avoir à récupérer dans mes tHashInput qu'une seule entrée mais j'obtiens un nullPointerException sur un des tHashOutput s'il est vide. Je m'explique : J'ai 3 tHashOutput qui s'appellent HASH1, HASH2 et HASH3. Sur HASH1 je ne coche pas la propriété. Sur HASH2 et HASH3 je la coche et dans la liste déroulante je choisi HASH1. Du coup, en sortie dans mon tHashInput, je le relie à HASH1 et j'ai bien les flux des mes HASH1,HASH2,HASH3... SAUF si HASH2 ou HASH3 ne contient pas de données. Dans ce cas là, j'obtiens la nullPointerException. Est-ce un bug connu du composant ou est-ce que j'en fait une mauvaise utilisation ? Je m'en suis sorti de toute façon, comme vous pouvez le voir sur la capture d'écran en mettant 3 tHashInput différents dirigés vers un tUnite. Merci encore, a plus tard |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com