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 16/09/2011, 14h47   #1
Candidat au titre de Membre du Club
 
Homme Chris M
Inscription : décembre 2009
Messages : 60
Détails du profil
Informations personnelles :
Nom : Homme Chris M
Âge : 40
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 60
Points : 13
Points : 13
Par défaut Transformation et boucle avec tMap

Bonjour,

Voici mon but : j'ai un composant tPostgreInput qui référence des données de ma base. J'ai un fichier tFileInput qui contient des données issues d'une table de la base mais exportées dans un format fichier spécifique. Je voudrais pouvoir regarder si un des champs de mon entrée tPostgreInput existe dans une de mes entrées du fichier. Si ce champ existe alors on conserve son nom sinon on met une autre string. Et le tout sort dans un tFileOutputDelimited

Est ce possible premièrement ?

J'ai essayé de faire un lien main et un lookup pour mon FileInput sur ma tMap mais je ne sais pas trop bien ce que fait tMap derrière cela. (avec une expression de type (mon_champ.equals(ma_reference) ? mon_champ : "toto")

Merci
chrime71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 15h29   #2
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
Salut,

En effet cela est possible sur Talend.

Le tMap te servira à faire une jointure entre tes deux sources de données (Base et Fichier).

Si j'ai bien compris ce que tu veux faire alors il te faudra relier ta base aavec un lien MAIN au tMap et ton fichier avec un lien LOOKUP au tMap.

Après à l'intérieur de ton tMap il faut faire une jointure entre les deux entrés en choisissant les deux colonnes sur lequels tu veux faire cette jointure.

J'éspère que j'ai répondu à ta question.

Bonne chance.
__________________
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 16/09/2011, 15h35   #3
Candidat au titre de Membre du Club
 
Homme Chris M
Inscription : décembre 2009
Messages : 60
Détails du profil
Informations personnelles :
Nom : Homme Chris M
Âge : 40
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 60
Points : 13
Points : 13
C'est ce que j'ai fait sauf qu'il me remplace toutes mes valeurs par "toto" ... s'il ya des champs de ma base qui sont dans le fichier il ne garde pas la valeur du champ. C'est pour cela que je m'interroge sur ce que fait une jointure avec un lookup !!!!
chrime71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 15h46   #4
Candidat au titre de Membre du Club
 
Homme Chris M
Inscription : décembre 2009
Messages : 60
Détails du profil
Informations personnelles :
Nom : Homme Chris M
Âge : 40
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 60
Points : 13
Points : 13
En gros pour donner un exemple :

Venant de mon Input base j'ai parmi mes données une colonne que je vais appeler AAA qui contient les valeurs a, b, c, d, e, f.

Venant de mon input fichier j'ai les valeurs d'un champ que j'appelle QQQ qui doit matcher celles de AAA et qui contient les valeurs a, c, d

Je veux via ma tMap pouvoir ressortir dans un output fichier delimited les données venant de l'input base avec les valeurs de AAA si elles sont existantes dans QQQ. Sinon je remplace par "toto"

En sortie j'aurais donc a, toto, c, d, toto
chrime71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/09/2011, 16h04   #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
Oui je te comprends, en effet j'ai déjà rencontré ce genre de problème, la pluspart du temps ça vient de l'égalité entre les deux champs qui n'est pas vrai. Apparemment ta condition :

Code :
(mon_champ.equals(ma_reference) ? mon_champ : "toto")
renvoi toujours "toto", donc ça veut dire que tes deux colonnes ne sont jamais égales.

Le problème pourrait venir de tes champs, soit à cause des esapces ou je ne sais quoi. Essai d'afficher avec un tLogRow les colonnes et vérifie si elles sont bel et bien egales.
__________________
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 19/09/2011, 10h36   #6
Candidat au titre de Membre du Club
 
Homme Chris M
Inscription : décembre 2009
Messages : 60
Détails du profil
Informations personnelles :
Nom : Homme Chris M
Âge : 40
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 60
Points : 13
Points : 13
Je n'ai pas de soucis d'espace ou de champs différents des valeurs de la base !!!
chrime71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 10h51   #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
Est ce que tu peux poster une capture d'écran de ton job, ainsi que de l'intérieur de ton tMap ?
__________________
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 19/09/2011, 12h32   #8
Candidat au titre de Membre du Club
 
Homme Chris M
Inscription : décembre 2009
Messages : 60
Détails du profil
Informations personnelles :
Nom : Homme Chris M
Âge : 40
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 60
Points : 13
Points : 13
Je viens de lancer l’exécution du job en java debug et je m'aperçois que pour chaque entrée de mon objet représentatif de mon lookup tous les champs sont null .. donc forcément qd il compare ma chaine il compare à null en permanence !!

Je ne comprends pas trop du coup ce que l'objet du lookup fait des données ???
chrime71 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/09/2011, 15h39   #9
Candidat au titre de Membre du Club
 
Homme Chris M
Inscription : décembre 2009
Messages : 60
Détails du profil
Informations personnelles :
Nom : Homme Chris M
Âge : 40
Localisation : France

Informations forums :
Inscription : décembre 2009
Messages : 60
Points : 13
Points : 13
J'ai réussi finalement à faire ma transformation. L'input de type ldiff ne fonctionne pas trop visiblement. Via un inputDelimiter ca passe mieux en faisant attention de supprimer les qqs valeurs par défaut qu'impose TOS sur certains champs, notamment des dates qui se retrouvent à être des String !!!

Merci en tout cas pour l’intérêt !!
chrime71 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 02h05.


 
 
 
 
Partenaires

Hébergement Web