Bonjour est ce que quelqu'un sait comment faire une une jointure externe full avec talend svp?
Merci pour votre aide
Bonjour est ce que quelqu'un sait comment faire une une jointure externe full avec talend svp?
Merci pour votre aide
Je crois en effet que le tMap ne gère pas le Full Outer Join il faut le simuler via 2 jointures externes ou la faire via le sgbd (valeur sûre ^^ ).
Bonjour,
J'ai le même problème pour faire un outer join.
J'aimerais faire une jointure de 3tables :
table1:
ida idb valeur1
1 1 200
1 2 300
2 1 40
table2:
ida idb valeur2
1 1 20
1 2 400
table3:
ida idb valeur3
1 1 150
2 1 90
Résultat que je veux :
ida idb valeur1 valeur2 valeur3
1 1 200 20 150
1 2 300 400 null
2 1 40 null 90
Comment puis-je faire avec talend?
Si je joins les clés de la première table aux autres dans le tMap je n'ai pas les null j'ai que les résultats ou il y a la valeur1, la valeur2 et la valeur3 non null.
Vous avez dit « il faut le simuler via 2 jointures externes » c'est-à-dire ?
Merci
+1 pour Hebus_Beer,
quand vous avez des jointures, quelles soient externes ou internes, il vaut mieux directement le faire avec le sgbd courant. Une belle requête bien propre vaut mieux que plein de lookup et de condition dans un tMap. Surtout pour les performances...
D'où la requête suivante :
en espérant avoir pu te mettre sur la voix
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 select table1.ida, table1.idb, table1.valeur1, table2.valeur2, table3.valeur3 from table1 left outer join table2 on table1.ida = table2.ida and table1.idb = table2.idb left outer join table3 on table1.ida = table3.ida and table1.idb = table3.idb;
J’ai fait la requête avec left outer join elle fonction bien :
SELECT t.IdA, t.Periode, t.IdC,
t.Valeur, tt.Valeur, ttt.Valeur, tttt.Valeur FROM transport.transport_aerien t
LEFT OUTER JOIN transport.transport_aerien tt
ON t.IdA = tt.IdA
AND t.IdC = tt.IdC
AND t.Periode = tt.Periode
LEFT OUTER JOIN transport.transport_aerien ttt
ON t.IdA = ttt.IdA
AND t.IdC = ttt.IdC
AND t.Periode = ttt.Periode
LEFT OUTER JOIN transport.transport_aerien tttt
ON t.IdA = tttt.IdA
AND t.IdC = tttt.IdC
AND t.Periode = tttt.Periode
Where t.IdU = '2'
And t.IdM = '3'
And t.Periode like '%M%'
And tt.IdU = '2'
And tt.IdM = '7'
And ttt.IdU = '1'
And ttt.IdM = '2'
And tttt.IdU = '3'
And tttt.IdM = '6'
;
Mais elle ne prend pas si l’une des valeurs : t.Valeur, tt.Valeur, ttt.Valeur, tttt.Valeur est null. Je pense que c’est peut être un FULL OUTER JOIN mais la j’au un problème ça ne marche pas est ce quelqu’un sait pourquoi?
Bizare parce que le requête que je t'ai envoyé fonctionne bien : je l'ai testé et ça me sort les données que tu veux.
Par contre si tu as un problème de requête ouvre un autre Post dans le forum Oracle si c'est une base de données Oracle. Car là on devient hors sujet.
PS : pense à mettre ta requête entre balise code merci. Ca piquera moins les yeux
Est-ce que vous l’avez testé dans talend ? Si oui vous avez fait comment ?
Dans Talend :
tOracleInput :
- avec pour requête
-> schéma :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 SELECT table1.ida IDA, table1.idb IDB, table1.valeur1 VAL1, table2.valeur2 VAL2, table3.valeur3 VAL3 FROM table1 LEFT OUTER JOIN table2 ON table1.ida = table2.ida AND table1.idb = table2.idb LEFT OUTER JOIN table3 ON table1.ida = table3.ida AND table1.idb = table3.idb;
IDA Integer (NUMBER)
IDB Integer (NUMBER)
VAL1 String (VARCHAR2)
VAL2 String (VARCHAR2)
VAL3 String (VARCHAR2)
et j'ai envoyé le tout dans tLogRow pour voire le rendu de la requête
et si on est dans une base MYSQL il me semble que les commande left and right join ne fonctionne pas? est ce vrai?
Voir le lien suivant pour plus d'information à ce sujet : http://mysql.developpez.com/sources/...ull-outer-join
Pour les jointures je suis aussi pour le faire en SQL quand c'est possible.
Mais dans mon cas, les données viennent de deux fichiers CSV.
Je fais une jointure sur deux clés, mais ce que je veux comme résultat c'est ce qui est dans le fichier a mais pas dans le b et ce qui est dans le fichier b mais pas dans le fichier a.
Est ce quelqu'un a une idée?
Salut,
J'ai trouvé une solution sur le forum de Talend pour faire un full outer joi.
Voici le lien vers le post : http://www.talendforge.org/forum/viewtopic.php?pid=8873
Et vers le print screen : http://www.talendforge.org/forum/pos...lename=job.JPG
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager