Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > ETL > Talend
Talend Forum d'entraide sur Talend (Talend Open Studio, ...). Avant de poster --> FAQ Talend, Tutoriels Talend
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/03/2011, 19h06   #1
Futur Membre du Club
 
Homme
Consultant informatique
Inscription : septembre 2009
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : septembre 2009
Messages : 26
Points : 18
Points : 18
Par défaut Réunification de branches

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 (j'ai essayé tMap->tUnite, tAggregate->tUnite, tWarn->tUnite,... mais je ne peux connecter toujours qu'une seule input).

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
Images attachées
Type de fichier : jpg ReunificationBranchesAvant.JPG (44,2 Ko, 25 affichages)
Type de fichier : jpg ReunificationBranchesApres.JPG (33,6 Ko, 18 affichages)
zaewonyx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/03/2011, 22h57   #2
Rédacteur/Modérateur
 
Avatar de CyberChouan
 
Homme Benoît Courtine
Directeur technique
Inscription : janvier 2007
Messages : 2 744
Détails du profil
Informations personnelles :
Nom : Homme Benoît Courtine
Âge : 29
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2007
Messages : 2 744
Points : 4 202
Points : 4 202
Envoyer un message via MSN à CyberChouan
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).
__________________
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
CyberChouan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 11h01   #3
Rédacteur/Modérateur
 
Avatar de jsd03
 
Jean-Sébastien DARGES
Consultant décisionnel
Inscription : août 2008
Messages : 983
Détails du profil
Informations personnelles :
Nom : Jean-Sébastien DARGES
Localisation : France, Indre et Loire (Centre)

Informations professionnelles :
Activité : Consultant décisionnel

Informations forums :
Inscription : août 2008
Messages : 983
Points : 1 845
Points : 1 845
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 !
jsd03 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 11h35   #4
Futur Membre du Club
 
Homme
Consultant informatique
Inscription : septembre 2009
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : septembre 2009
Messages : 26
Points : 18
Points : 18
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 )
zaewonyx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 11h53   #5
Membre émérite
 
Homme Nicolas Saumande
Architecte Décisionnel
Inscription : février 2008
Messages : 693
Détails du profil
Informations personnelles :
Nom : Homme Nicolas Saumande
Âge : 36
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Architecte Décisionnel

Informations forums :
Inscription : février 2008
Messages : 693
Points : 879
Points : 879
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
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/03/2011, 12h37   #6
Membre régulier
 
Etienne Menuet
Inscription : mai 2010
Messages : 71
Détails du profil
Informations personnelles :
Nom : Etienne Menuet
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2010
Messages : 71
Points : 98
Points : 98
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
emenuet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/03/2011, 10h22   #7
Futur Membre du Club
 
Homme
Consultant informatique
Inscription : septembre 2009
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : septembre 2009
Messages : 26
Points : 18
Points : 18
Salut,

merci beaucoup pour vos réponses. J'ai choisi la solution d'emenuet :
Citation:
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.
Ca marche très bien, du moins pour la volumetrie que j'ai dans mes tests (10 entrées). Il va falloir voir comment ça se comporte sur flux important.

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
Images attachées
Type de fichier : jpg HashBufferInput.JPG (45,7 Ko, 12 affichages)
Type de fichier : jpg HashBufferOutput.JPG (42,8 Ko, 11 affichages)
zaewonyx est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h14.


 
 
 
 
Partenaires

Hébergement Web