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 10/03/2011, 22h49   #1
Futur Membre du Club
 
Homme
Consultant informatique
Inscription : septembre 2009
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : septembre 2009
Messages : 26
Points : 18
Points : 18
Par défaut Filtrer les doublons identifiés en base

Salut,

je vais essayer d'être concis, mais c'est pas gagné...

Je suis en Talend 4.2.
J'ai un tFileInput (un fichier contenant des personnes) et dont les données vont dans un tMap, c'est mon entrée main.

J'ai un tmysqlinput qui va dans le même tMap et c'est mon lookup.
Le lookup est effectué sur le quadruplé de champs : nom, prénom, date de naissance, nom de jeune fille.

J'ai donc 3 possibilités :
  • l'entrée courante du fichier n'existe pas en base
  • l'entrée courante existe en base et est unique
  • l'entrée courante du fichier existe en base et correspond à plusieurs lignes

Ce que je souhaiterais, c'est, en gros, envoyer toutes les entrées uniques ou inexistantes dans une sortie A et les entrées en doublon dans une sortie de rejet (B).

Si l'entrée n'existe pas en base, j'arrive bien à envoyer dans la sortie A, en faisant un tfilterRow sur l'id (qui est donc null) après le tMap .
Par contre, je n'arrive pas à distinguer une ligne qui serait retournée plusieurs fois pour le même quadruplé.

Comment faut-il que je fasse s'il-vous-plait ?

Merci d'avance

Note : je suis plus que disponible pour tout complément d'information
zaewonyx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 11h58   #2
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,

Tu pourrais paramétrer le lookup avec le 'Match Model' en 'All Matches' et utiliser un tUniqRow sur ta sortie B afin d'identifier les lignes qui sont en doublon.

Nicolas
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 15h30   #3
Futur Membre du Club
 
Homme
Consultant informatique
Inscription : septembre 2009
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : septembre 2009
Messages : 26
Points : 18
Points : 18
Bonjour,

merci pour cette réponse, c'est exactement celle que j'attendais pour commencer la discussion et voir si je m'étais bien fait comprendre

Donc... C'est exactement ce que j'avais fait :
le lookup en All Matches.
1 seule sortie dans le tMap (on va l'appeler COMPLET).
Après le tMap, je fait un tFilterRow sur COMPLET (je vérifie la présence d'un id) et j'obtiens bien deux sorties distinctes : les données n'existant pas en base d'un côté (INEXISTANT) et les données existants en base de l'autre côté (EXISTANTES).

Sur la sortie EXISTANTES, je fais alors un tUniqRow. Je peux donc récupérer 2 nouvelles sorties : Doublons et Uniques. On se rapproche, sauf que mon problème se situe à ce niveau.
En effet, dans la sortie Doublons, j'ai bien mes doublons, mais dans la sortie Uniques j'ai mes données uniques + une des données doublonnées. je voudrais uniquement avoir les données réellement uniques.

Un petit exemple :
j'ai 4 personnes : pierre, paul, jean et paul. Paul est donc en doublon.
Si je fais un tUniqRow sur ces données, j'aurais alors paul dans Doublons et pierre, jean ET paul dans Uniques.
Ce que je souhaiterais, c'est avoir paul dans Doublons et pierre et jean dans Uniques

Merci d'avance
zaewonyx est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 15h46   #4
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 zaewonyx Voir le message
merci pour cette réponse, c'est exactement celle que j'attendais pour commencer la discussion et voir si je m'étais bien fait comprendre
Ah... Du coup je me suis fait coincé.

Citation:
Envoyé par zaewonyx Voir le message
En effet, dans la sortie Doublons, j'ai bien mes doublons, mais dans la sortie Uniques j'ai mes données uniques + une des données doublonnées. je voudrais uniquement avoir les données réellement uniques.
Ah ok, je ne m'étais jamais penché sur le fonctionnement du composant tUniq...

Tu pourrais utiliser un tAggregateRow à la place du tUniq, avec un champ qui compte le nombre d'occurrences de chaque clé. Et ensuite tu filtres pour ne garder que les lignes qui n'ont qu'une occurrence.
Mais par contre, tu ne récupères qu'une ligne par doublon, avec le nombre de lignes formant le doublon.

Ca te convient ?

Nicolas
DevNico est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/03/2011, 14h50   #5
Futur Membre du Club
 
Homme
Consultant informatique
Inscription : septembre 2009
Messages : 26
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : septembre 2009
Messages : 26
Points : 18
Points : 18
Salut,

merci pour ta réponse :
Citation:
Envoyé par DevNico Voir le message
Tu pourrais utiliser un tAggregateRow à la place du tUniq, avec un champ qui compte le nombre d'occurrences de chaque clé. Et ensuite tu filtres pour ne garder que les lignes qui n'ont qu'une occurrence.
Mais par contre, tu ne récupères qu'une ligne par doublon, avec le nombre de lignes formant le doublon.
Ca me convient parfaitement et j'ai bien le résultat attendu.

Merci encore, à plus

Mathieu
zaewonyx 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 00h05.


 
 
 
 
Partenaires

Hébergement Web