|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() lle lle Inscription : novembre 2009 Messages : 29 ![]() |
Bonjour,
Voici mon probleme et pour l'instant je ne vois pas comment faire : J'ai un fichier (que j'ai generer via Talend) qui donne cela en sortie : 5101|0430071530|14/12/2010 5101|0430071532|14/12/2010 5101|0430071529|14/12/2010 5103|0430071516|15/12/2010 5103|0430071517|15/12/2010 Je souhaiterais le transformer de cette maniere : 5101|0430071530|14/12/2010|0430071530 5101|0430071532|14/12/2010|0430071530 5101|0430071529|14/12/2010|0430071530 5103|0430071516|15/12/2010|0430071516 5103|0430071517|15/12/2010|0430071516 Et je ne vois pas comment faire. Pouvez vous m'aider ou m'orienter ? merci |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 812 ![]() |
Avec un
tFileInputdelimited ->tMap -> tFileOutputDelimited Si c'est le même fichier et qu'il y a un problème de verrou, il faudrait passer par un fichier temporaire.
__________________
Pensez à la fonction Recherche |
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() lle lle Inscription : novembre 2009 Messages : 29 ![]() |
Je genere ce fichier deja de cette maniere. En quoi refaire une passe tfileinput->tmap-> tfileoutput va me rajouter le dernier champ ??? et surtout que sa valeur est differente. (????)
|
|
|
00
|
|
|
#4 |
|
Membre actif
![]() Consultant informatique Inscription : mars 2003 Messages : 130 ![]() |
explique mieux ton probleme
(rien ne t'empeche de modifier ta génération de fichier) tu ne nous donne pas les éléments pour répondre . On ne sais pas d'ou viens la valeur du nouveau champs |
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() lle lle Inscription : novembre 2009 Messages : 29 ![]() |
Desole je pensais que l'exemple se suffisait a lui meme vu que le nouveau champ se trouve a :
5101|0430071530|14/12/2010 A chaque fois c'est le second champ du premier enregistrement selon la clef 5101/....../14/12/2010 (qui est une date) |
|
|
00
|
|
|
#6 |
|
Membre du Club
![]() Slim Analyste Programmeur Inscription : janvier 2008 Messages : 108 ![]() |
5103|0430071516|15/12/2010|0430071516
5103|0430071517|15/12/2010|0430071516 dans la première ligne tu as 0430071516 (2ieme champs) et a la fin 0430071516 aussi Mais pour la seconde, tu as 0430071517 tu as toujours 0430071516 a la fin? pour quoi ce changement? |
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 812 ![]() |
Ah oui je n'avais pas vu
Il doit falloir faire un 2eme sous-job avec le fichier à la fois en entrée et en lookup avec une jointure sur la première colonne. Pour la règle de gestion s'il faut prendre le plus petit num il faudrait mettre un tAggregateRow entre le tFileInput en lookup et le tMap.
__________________
Pensez à la fonction Recherche |
|
|
00
|
|
|
#8 |
|
Membre émérite
![]() Nicolas SaumandeArchitecte Décisionnel Inscription : février 2008 Messages : 693 ![]() |
Bonjour,
A priori, cette problématique peut-être résolue en triant les données en entrée, et en utilisant des variables dans un tMap. Si je reprends ton exemple : Chp1|Chp2|Chp3 5101|0430071530|14/12/2010 5101|0430071532|14/12/2010 5101|0430071529|14/12/2010 5103|0430071516|15/12/2010 5103|0430071517|15/12/2010 Les variables à déclarer dans le tMap doivent ressembler à quelque chose comme ça : - Chp2_Origine = Si Var.Chp3_avant est null ou Var.Chp3_avant <> In.Chp3 Alors Chp2 Sinon Chp2_Origine - Chp3_avant = In.Chp3 Tu peux ensuite récupérer ton champ via la variable Chp2_Origine. Nicolas |
|
|
00
|
|
|
#9 |
|
Nouveau Membre du Club
![]() Inscription : janvier 2005 Messages : 60 ![]() |
La solution de DevNico est bonne.
Sinon tu peux egalement te facilité la vie grace au composant tBeakRow (sur TalendExchange pas dans le produit nativement), qui te trie tes données et sur lesquelles tu peux avoir une clé de rupture. Apres dans un test, tu verifies que si isFirst = true, tu stock la valeur dans une variable de la globalMap par exemple et tu la réutilise pour ta dernière colonne. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com