|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() |
Bonjour,
je maîtrise encore mal Talend et ne connais que très peu Java. En début de job (après un tPrejob), je déclares une variable globale "nom_fichier" vide (dans un tSetGlobalVar) plus loin dans mon traitement, je définis cette variable dans un tJavaRow par globalMap.put("nom_fichier", nom_fichier); dans ce même tJavaRow, je transmets également la variable avec output_row.nom_fichier = nom_fichier; pour avoir la valeur qui doit être enregistrée en base je parcours plusieurs provenant d'une base de données, et chaque ligne génère un nom_fichier différent en sortie de mon tMysqlInput, j'ai mis un tFlowToIterate pour traiter chaque ligne séparément en fin de traitement, je dois écrire dans un fichier qui, vous l'aurez deviné, doit s'appeler du nom se trouvant dans la variable j'ai donc créé un tFileOutputDelimited et indiqué "B" + (String)globalMap.get("nom_fichier") + ".txt" dans le paramètre "Nom de fichier" mais la variable n'a pas de valeur à ce moment-là (mon fichier s'appelle juste B.txt) alors que la valeur passée par output_row est correcte à la ligne suivante, la variable a une valeur mais c'est celle de la ligne d'avant (et ainsi de suite) est-ce que la valeur est affectée seulement en fin de traitement du sous-job où elle est définie ? je ne comprends pas pourquoi ça fait ça, d'autant que l'affectation fonctionne puisque la valeur devient disponible plus tard (mais trop tard) merci d'avance de m'éclairer, je nage lamentablement là |
|
|
00
|
|
|
#2 |
|
Nouveau Membre du Club
![]() Inscription : février 2010 Messages : 24 ![]() |
Bonjour,
Pourrais-tu faire un imprimé écran de ton job ? Ton problème est simple, mais l'orchestration des différents éléments n'est pas très claire en lisant ton texte. Julien |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() |
voilà, c'est dans tJavaRow_3 que je fais globalMap.put("nom_fichier", nom_fichier); et output_row.nom_fichier = nom_fichier;
tous les fileOutput fonctionnent sur le même principe, c'est juste pour écrire différentes lignes le prejob est avant le bout de flèche qu'on voit en haut à gauche qui arrive sur le tMysqlInput vient du tMysqlConnection |
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : février 2010 Messages : 24 ![]() |
D'accord je vois mieux.
1) Remarque pas très importante mais j'informe quand même : Le tSetGlobalVar que tu as positionné au niveau de ton prejob n'a pas d'utilité. En fait le code qui est généré derrière ce composant est identique à celui que tu as mis au niveau de ton tJavaRow_3, c'est à dire que tSetGlobalVar{paramètres : "nom_fichier",""} <=> globalMap.put("nom_fichier", ""); Tu comprendras donc qu'utiliser ce composant pour "initialiser" la clé n'a, à priori, pas vraiment d'intérêt. 2) Dans un flux, peu importe le nombre de composants, la sortie est "ouverte" avant l'entrée (cf wiki de talend open studio). Cela veut donc dire qu'à chaque itération de ton flux, les chemins de tes fichiers de sortie sont initialisés avant le "démarrage" du flux. C'est pourquoi ton composant tJavaRow_3 affecte "nom_fichier" avec un train de retard... Pour résoudre ton problème il faut donc que tu te débrouilles pour que la valeur de ta clé "nom_fichier" soit affectée à priori de l'execution du flux (qui commence à tJava_1 et se termine avec les sorties de tMap_2). Donc juste avant le tFlowToIterate_1, si tu as moyen de déterminer le nom du fichier à ce moment là. J'espère que ça répond à ton problème. J. |
|
|
10
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() |
merci !!
en déplaçant le code dans un tjavaRow en sortie du tMysqlInput, ça fonctionne (au moins pour le nom de fichier, pour le reste de mon job, c'est moins sûr ^^) |
|
|
00
|
|
|
#6 | |
|
Nouveau Membre du Club
![]() Inscription : février 2010 Messages : 24 ![]() |
Citation:
Est-ce vous avez testé que tWSI_1 vous renvoie bien un résultat, indépendamment du job, en renseignant une valeur d'ID en dur par exemple ? La valeur de increment_id est-elle liée à la sortie du traitement ? Quelles options de lookup utilisez-vous pour tWSI_1 ? |
|
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() |
oui le webservice renvoi bien qqch si je mets une valeur en dur
cela dit, cela va être traité autrement, la question ne se pose donc plus (pour le moment ^^) merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com