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 29/09/2011, 11h20   #1
Membre extrêmement actif
 
Avatar de jojodu31
 
Inscription : mars 2008
Messages : 870
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2008
Messages : 870
Points : 733
Points : 733
Par défaut Soustraire le contenu d'un fichier à un autre

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.
jojodu31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 13h17   #2
Membre du Club
 
Avatar de jnbarthas
 
Homme
Ingénieur développement logiciels
Inscription : août 2011
Messages : 49
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : août 2011
Messages : 49
Points : 64
Points : 64
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.
jnbarthas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 15h17   #3
Membre extrêmement actif
 
Avatar de jojodu31
 
Inscription : mars 2008
Messages : 870
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2008
Messages : 870
Points : 733
Points : 733
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.
jojodu31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 16h05   #4
Membre du Club
 
Avatar de jnbarthas
 
Homme
Ingénieur développement logiciels
Inscription : août 2011
Messages : 49
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : août 2011
Messages : 49
Points : 64
Points : 64
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
jnbarthas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 16h16   #5
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
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
haskouse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 16h27   #6
Membre extrêmement actif
 
Avatar de jojodu31
 
Inscription : mars 2008
Messages : 870
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2008
Messages : 870
Points : 733
Points : 733
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.
jojodu31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 16h58   #7
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
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
haskouse est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 17h14   #8
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
Citation:
Envoyé par jojodu31 Voir le message
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 ?
Je confirme que ça fonctionne, j'ai déjà employé ce procédé.

Nicolas
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/09/2011, 17h16   #9
Membre extrêmement actif
 
Avatar de jojodu31
 
Inscription : mars 2008
Messages : 870
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2008
Messages : 870
Points : 733
Points : 733
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.
jojodu31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 09h37   #10
Membre du Club
 
Avatar de jnbarthas
 
Homme
Ingénieur développement logiciels
Inscription : août 2011
Messages : 49
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

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

Informations forums :
Inscription : août 2011
Messages : 49
Points : 64
Points : 64
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).
"
jnbarthas est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/09/2011, 11h21   #11
Membre extrêmement actif
 
Avatar de jojodu31
 
Inscription : mars 2008
Messages : 870
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : mars 2008
Messages : 870
Points : 733
Points : 733
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.
jojodu31 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h49.


 
 
 
 
Partenaires

Hébergement Web