|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre extrêmement actif
![]() Inscription : mars 2008 Messages : 870 ![]() |
Salut!
question ultra simple mais je bloque J'ai 2 fichiers en entrée. J'aimerais avoir en sortie un fichier contenant ce qui est dans le 1er mais pas dans le second (une sorte de soustraction). Exemple: *** fichier 1 *** maClé1 maClé2 *** fichier 2 *** maClé1 ***** fichier résultat ***** maClé2 Des idées ? Merci d avance
__________________
Heureux soient les fêlés, car ils laisseront passer la lumière. Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet. |
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Ingénieur développement logiciels Inscription : août 2011 Messages : 49 ![]() |
Bonjour,
avec un tMap, ça doit être possible: en utilisant au besoin les variables locales intermédiaires pour identifier les critères et orienter vers le bon flux de sortie. |
|
|
00
|
|
|
#3 |
|
Membre extrêmement actif
![]() Inscription : mars 2008 Messages : 870 ![]() |
en effet je pense que c'est possible avec une tMap... c'est justement ma question => Comment
__________________
Heureux soient les fêlés, car ils laisseront passer la lumière. Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet. |
|
|
00
|
|
|
#4 |
|
Membre du Club
![]() Ingénieur développement logiciels Inscription : août 2011 Messages : 49 ![]() |
justement avec les variables locales, opérateur ternaire, filtre
*** fichier 1 *** maClé1 maClé2 *** fichier 2 *** maClé1 ***** fichier résultat ***** maClé2 Var.cle1=row1.value; // flux fichier 1 Var.cle2=row2.value; // flux fichier 2 Var.bool=Var.cle1.equals (Var.cle2)? false: true dans le flux output: si Var.bool == true fichier resultat la condition sur bool peut être !equals ou le filtre inversé selon les besoins pour la sortie contraire ... en combinant tout ça, ça doit marcher bonne continuation |
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() ![]() Mustapha EL HASSAKIngénieur développement logiciels Inscription : août 2009 Messages : 627 ![]() |
Ton premier fichier : Fichier1
UneColonne1 1 2 3 4 5 Ton deuxième fichier : Fichier2 UneColonne2 2 4 6 Le résultat : 1 3 5 Personnellement j'aurais procédé comme ceci : Fichier1 et Fichier2 en entrée dans un tMap (Fichier1 en main) --> row1 (Fichier2 en lookup) --> row2 Dans le tMap, jointure entre UneColonne1 du Fichier1 et UneColonne2 du Fichier2. Dans la sortie du tMap, tu ajoutes un filtre (row2.UneColonne2 == null ). Et ça marche !!
__________________
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 |
|
|
00
|
|
|
#6 |
|
Membre extrêmement actif
![]() Inscription : mars 2008 Messages : 870 ![]() |
ahhh punaise j'ai tout essayé avec les inner join je pensais bien que ça pouvait passer.
J'ai fait un innerJoin comme tu l écris, et en fait en sortie j'ai mis un output avec juste "catch inner join reject", je ne vois pas pourquoi ça ne marche pas... s'il trouve une clé dans le fichier1 et pas dans le 2 c'est bien un rejet de l innerJoin non ? merci en tous cas
__________________
Heureux soient les fêlés, car ils laisseront passer la lumière. Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet. |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() ![]() Mustapha EL HASSAKIngénieur développement logiciels Inscription : août 2009 Messages : 627 ![]() |
Je ne connais pas très bien le truc des catchs reject, mais d'après ma petite expérience ce que j'ai compris c'est qu'il faut mettre deux sorties, et c'est sur la deuxième sortie ( avec l'option catch reject ) que tu vas récupérer ce qui n'est pas passé dans al première.
J'éspère que tu m'as compris
__________________
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 |
|
|
00
|
|
|
#8 | |
|
Membre émérite
![]() Nicolas SaumandeArchitecte Décisionnel Inscription : février 2008 Messages : 693 ![]() |
Citation:
Nicolas |
|
|
|
00
|
|
|
#9 |
|
Membre extrêmement actif
![]() Inscription : mars 2008 Messages : 870 ![]() |
ouaip, en fait le test == null ne sert à rien. Comme je le pensais c'est le catch inner join reject qui est prévu pour.
Donc en fait j'ai juste mis une sortie en cochant cette option et ça marche ![]() Mon problème venait du fait que j'avais inversé le Main et le LookUp MErci !
__________________
Heureux soient les fêlés, car ils laisseront passer la lumière. Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet. |
|
|
00
|
|
|
#10 |
|
Membre du Club
![]() Ingénieur développement logiciels Inscription : août 2011 Messages : 49 ![]() |
Oui, c'est un des aspects de base du tMap
* définition Flux principal/flux de référence [permutation possible] * définition jointure (inner join ou PAS (=left outer join) * gestion rejet jointure on voit ça en formation FOUNDATION ou dans certains tuto. OU dans cet extrait du livre http://livre.fnac.com/a3664455/Jean-...ion-de-donnees "• Rejet du flux de sortie : Catch ouput reject (Orange). • Absence de correspondance dans les flux secondaires, rejet de jointure: Catch lookup inner join reject (Violet). " |
|
|
00
|
|
|
#11 |
|
Membre extrêmement actif
![]() Inscription : mars 2008 Messages : 870 ![]() |
en effet, en fait j'avais fait des trucs sympa avec Talend il y a quelques temps, et là je m'y replonge donc quelques oublis de ci de là
Mais ça y est je suis sur les rails MErci à vous
__________________
Heureux soient les fêlés, car ils laisseront passer la lumière. Mieux vaut fermer sa gueule et passer pour un con que l'ouvrir et ne laisser aucun doute à ce sujet. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com