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 25/01/2012, 11h06   #1
j6m
Membre du Club
 
Inscription : février 2006
Messages : 86
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 86
Points : 58
Points : 58
Par défaut tMap : inner join reject et valeur NULL

Bonjour à tous,
Dans mon tMap, je fais une jointure interne entre deux tables ; si la valeur A.nom (A = flux de données à intégrer) n'est pas dans la table B l'enregistrement n'est pas intégré et une erreur est tracée.
Donc si la valeur n'est pas renseignée (blanc / NULL) l'enregistrement est rejeté.

Finalement, la CP me dit que les enregistrements à blanc doivent être intégrés : seuls les enregistrements ayant une valeur renseignée mais pour lesquels cette valeur n'est pas dans la BD, doivent être écartés.

Ex :
***
enr 1(nom X, valeur Y)
enr 2(nom Z, valeur Y)
enr 3(null, valeur Z)

Si "nom X" est connu et pas "nom Z" ("valeur Y" et "valeur Z" étant connues dans la BD), le deuxième enregistrement doit être écarté mais le troisième doit être intégré.

Du coup mon rejet de jointure interne n'est plus valable... Par quels tests puis-je remplacer cela?
Merci par avance de vos réponses.
j6m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 11h35   #2
j6m
Membre du Club
 
Inscription : février 2006
Messages : 86
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 86
Points : 58
Points : 58
Par défaut left outer join et catch output reject

Dans le tmap je mets un left outer join à la place de l'inner join
Et je teste côté droit si c'est non null (à intégrer) OU BIEN si c'est null je teste que la valeur de mon champ A est nulle aussi (à intégrer aussi).
Dans les autres cas (le résultat de mon left outer join est NULL, mais le champ A n'est pas vide) je rejette.
Merci à tous !
j6m est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/01/2012, 11h35   #3
Membre Expert
 
Avatar de Benoit_Durand
 
Benoit Durand
Consultant en Business Intelligence Freelance
Inscription : mars 2005
Messages : 816
Détails du profil
Informations personnelles :
Nom : Benoit Durand
Localisation : France, Gironde (Aquitaine)

Informations professionnelles :
Activité : Consultant en Business Intelligence Freelance

Informations forums :
Inscription : mars 2005
Messages : 816
Points : 1 089
Points : 1 089
Bonjour,

Je ne suis pas sûr d'avoir tout compris.

Je ferais un left join entre les 2 sources et dans la sortie je rajouterai une condition du genre :
si A.nom == null OR (A.nom!=null ET B.nom !=null)

et faire une 2eme sortie avec un output reject.

non ?

Cdt,
__________________
Pensez à la fonction Recherche
Benoit_Durand est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/01/2012, 11h40   #4
j6m
Membre du Club
 
Inscription : février 2006
Messages : 86
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 86
Points : 58
Points : 58
Par défaut Merci

Citation:
Envoyé par Benoit_Durand Voir le message
Bonjour,

Je ne suis pas sûr d'avoir tout compris.

Je ferais un left join entre les 2 sources et dans la sortie je rajouterai une condition du genre :
si A.nom == null OR (A.nom!=null ET B.nom !=null)

et faire une 2eme sortie avec un output reject.

non ?

Cdt,
Oui merci beaucoup ; je crois que c'est ce que j'ai fait.
j6m 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 00h02.


 
 
 
 
Partenaires

Hébergement Web