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 30/11/2010, 16h05   #1
Membre du Club
 
Inscription : mai 2007
Messages : 194
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2007
Messages : 194
Points : 48
Points : 48
Par défaut creation d'une requete avec "where" dynamique

Bonjour a tous,

Je suis face a un problème que j'espère vous pourrez m'aider à résoudre.

J'ai deux objets tOracleInput qui grace a un tJoin me ressort les enregistrements que je souhaite.

Mais j'ai maintenant une autre requete qu'il faut appliquer pour chacun des enregistrements.

Code :
SELECT sum(poids) FROM maTable WHERE colis_id = VALUE
dans l'exemple ci dessus, il faut donc que mon where soit dynamique (que la requete s'exécute pour chaque VALUE obtenus grâce à la précédente requete.



C'est pas très bien expliqué, veuillez m'en excuser mais j'espere que vous comprendrez mon soucis et pourrez m'aider.

Merci
yozart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 16h12   #2
Membre Expert
 
Avatar de haskouse
 
Homme Mustapha EL HASSAK
Ingénieur développement logiciels
Inscription : août 2009
Messages : 627
Détails du profil
Informations personnelles :
Nom : Homme Mustapha EL HASSAK
Âge : 26
Localisation : Maroc

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : Finance

Informations forums :
Inscription : août 2009
Messages : 627
Points : 1 514
Points : 1 514
Bonjour,

Ce que tu désires faire est possible, il suffit que dans ta requête tu mettes par exemple une variable de contexte dans le where comme ça :

Code :
"SELECT sum(poids) FROM maTable WHERE colis_id =" + context.mavariable
Maintenant il faut savoir d'où proviendra la valeur de ta variable de contexte :
Une table, Un fichier de config, entrée par le user, etc ...
__________________
Le savant qui enseigne le bien aux gens et ne le met pas en pratique, est semblable à la torche qui éclaire en se brûlant. "Mohammed le Messager d’Allah" (que la paix et le salut d'Allah soient sur lui)

Mes articles publiés
haskouse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 08h42   #3
Membre du Club
 
Inscription : mai 2007
Messages : 194
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2007
Messages : 194
Points : 48
Points : 48
Ok, je comprend l'astuce. Dans mon cas, cela provient d'une autre requete. Je vais regarder du coté des tForEach ou tLoop ou que sais-je encore si j'arrive a obtenir ce que je veux
yozart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 10h13   #4
Membre actif
 
Consultant informatique
Inscription : mars 2003
Messages : 130
Détails du profil
Informations personnelles :
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : mars 2003
Messages : 130
Points : 181
Points : 181
tu crée une variable de context comme te la dis haskouse.

En Début de job, ta requete pour aller chercher les variable
tu pointe le flux de donnée vers un tJavaFlex ou tu affecte la valeur a ta variable de context (context.variable=row1.variable; tu peux dans l'init )
Ensuite tu choisit la ligne iterate pour pointer vers le composant ou tu utilise le where dynamique .
Voili Voilou
kisskool45 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 10h15   #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
Jette un coup d'œil du coté du tFlowToIterate, afin d'exécuter le 2ème tOracleIntput pour chaque ligne en sortie du premier.

Comme le propose Haskouse, tu peux utiliser les données en sortie du 1er select dans la requête du 2ème (tu récupères la variable qui va bien avec l'auto-completion (ctrl+espace)).

Nicolas
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 10h38   #6
Membre du Club
 
Inscription : mai 2007
Messages : 194
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2007
Messages : 194
Points : 48
Points : 48
Merci beaucoup pour toutes ces infos !!!
yozart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 14h34   #7
Membre du Club
 
Inscription : mai 2007
Messages : 194
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2007
Messages : 194
Points : 48
Points : 48
Bon, j'ai quelques difficultés à utiliser le tFlowToIterate. Y a pas beaucoup de tuto sur le net ou d'exemples.
je vais donc essayer d'expliquer au mieux ce que j'ai et ce que je souhaite faire


J'ai un OracleInput qui me renvoie un certain nombre de lignes avec diverses données.

Je souhaiterais ajouter des données à chacune des ligne en provenance d'une autre table (en se basant sur l'ID de l'OracleInput).

=> jusque la, il m'est possible d'utiliser un tJoin qui marche très bien (ma seconde requete ne me renvoyant qu'une ligne par ID)

Mais, je dois encore rajouter des infos a chacune des lignes. Toujours en me basant sur l'ID. Cependant, cette requete me sort plusieurs lignes pour un ID. Il me faudrait concatener toutes ces lignes (a priori, le tDenormalize fais cela)

Mon problème réside dans l'enchainement des objets..

tOracleInput ----> tFlowToIterate ----> (ici je récupère les 2 requetes avec l'ID de la ligne itérée) ----> (ici, j'ajoute ces données a la ligne itérée) -----> (j'insère la ligne dans une BDD existante)
yozart est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/01/2011, 21h41   #8
Membre régulier
 
Inscription : novembre 2006
Messages : 226
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 226
Points : 94
Points : 94
Bonsoir,

As-tu pu avancer sur l'orchestration du composant tFlowIterate ?
je bloque aussi sur son utilisation
scariou29 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 09h34   #9
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
Bonjour,

A priori la problématique de yozart ne nécessite pas l'utilisation d'un tFlowToIterate. Il devrait arriver à faire ce qu'il veut avec des lookups sur un tMap suivi d'un tDenormalize.

Scariou29, le mieux serait que tu créées une nouvelle discussion pour exposer ton problème.

Nicolas
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/01/2011, 10h13   #10
Membre régulier
 
Inscription : novembre 2006
Messages : 226
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 226
Points : 94
Points : 94
Bonjour,

Discussion déjà créée
http://www.developpez.net/forums/d10...tures-fichier/
scariou29 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 03h59.


 
 
 
 
Partenaires

Hébergement Web