|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 477 ![]() |
Bonjours à tous,
Je découvre talend et donc je suis loin de tout maitrisé, j'aurais besoin d'une explication si cela est possible. Alors voilà j'ai dans une table d'une bdd source une valeur de champs numérique, dans le champs correspondant de mon data warehouse le champs est en chaine de caractères. En fonction de la valeur numérique je dois attribuer une chaine précise. exemple : lorsqu'un tuple à la valeure 0 dans ma bdd source je dois lui mettre Mr dans le data warehouse, Mme si la valeure est 1 et Mlle pour 2. Dans le tmap j'ai défini une variable où j'ai écris un algo "switch" mais ça ne marche pas puisque l'appelle de cet algo est fait en tant que simple variable et non comme une fonction. Voilà, comment vous vous feriez? Il y a t'il possibilité d'utiliser des fonctions/procédures avec talend ou alors dans le tmap il y a un outil pour le faire? Merci d'avance |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 817 ![]() |
Salut,
Dans ton tmap tu dois pouvoir utiliser une syntaxe du style : (myTable.myColumn == 0) ? "Mr" : (myTable.myColumn==1) ? "Mme" : "Mlle" sinon tu peux mettre ton switch dans un tJavaRow J'espère que ça t'aidera Cordialement |
|
|
00
|
|
|
#3 |
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 477 ![]() |
ok je vais voir ça, dans le manuel que j'ai (VF) il n'y a rien sur le tjavarow, tu peux me dire ce que tu sais dessus?
|
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 817 ![]() |
tu y mets direcement ton code java dedans.
Tu récupères tes données avec input_row.colonne et tu initialises tes données de sorties par output_row.colonne nickel pour des transformations java un peu sioux. |
|
|
00
|
|
|
#5 |
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 477 ![]() |
ok, intéressant ça
|
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 477 ![]() |
je n'ai pas encore lancer le run mais je n'ai pas de message d'erreur. Donc y'a une possibilité que ça marche, je ne le lance pas de suite car dans la même table source il y a un champs sur lequel je dois travailler de la même façon. Il s'agit d'un champs numérique que je dois comparer avec des données d'un fichier et le retravailler en fonction de la comparaison? J'ai voulu faire un row qui va de mon fichier vers le tJava_Row sur lequel j'ai travailler l'histoire des mr madame mais ce n'est pas possible je ne peux pas faire d'autre row.
|
|
|
00
|
|
|
#7 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 817 ![]() |
un tJavaRox n'a qu'un seul flux d'entrée et qu'un schema de flux de sortie mais tu peux avoir plusieurs flux de sortie basés sur ce schéma.
Si tu veux croiser les données de plusieurs flux, utilise un tMap. |
|
|
00
|
|
|
#8 | ||
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 477 ![]() |
je reviens sur l'histoire des Mr, Mme etc...
avec le tjavarow j'obtiens une erreure. Voilà ce que j'ai fais dans mon dans la zone de code du tjavarow : Code :
|
||
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 817 ![]() |
input_row.DEAR à première vue.
Mais si c'est autre chose, je te conseil de mettre l'erreur java ca aide bien à déterminer la cause. |
|
|
00
|
|
|
#10 | ||
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 477 ![]() |
me suis trompé en recopiant, j'ai bien mis input_row.DEAR.
voilà le message d'erreur : Code :
|
||
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 817 ![]() |
Tu peux faire un screenshot de tMysqlInput stp ?
|
|
|
00
|
|
|
#12 | ||||
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 477 ![]() |
j'ai mis le screen shot en pièce jointe
je viens de tester avec des si imbriqués dans le javarow Code :
Code :
|
||||
|
|
00
|
|
|
#13 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 817 ![]() |
Là comme ça je ne vois pas trop.
Si tu connais pas mal java, je te conseil de regarder le code généré par talend, tu y verras toutes les erreurs de compilation. Idem lors de l'execution d'un job si tu as une erreur, décoche les cases de stat et trace dans la fenetre d'execution, reéxécute et regarde la ligne de code qui a commise l'erreur. Apres il existe des techniques de debuggage avancées notamment avec la vue debug, pour faire de debuggage temps réel et sur le papier ça dépote mais je ne m'en sers jamais. N'hésites pas à poster plus d'infos qui te semblent pertinente à la résolution du pb. Bon courage Cordialement |
|
|
00
|
|
|
#14 |
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 477 ![]() |
oui c'est ce que je suis en train de faire, je regarde le code, il semblerait qu'il aime pas mon switch qui est pourtant correctement écris, je reteste avec les if, je vais bien finir par trouver
|
|
|
00
|
|
|
#15 |
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 477 ![]() |
dans le javarow je reconfigure un champs le DEAR, mais ne dois je pas aussi mettre que ouput_row.champs1 = input_row.champs1 etc...???
|
|
|
00
|
|
|
#16 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 817 ![]() |
en effet, il ne transfert pas automatiquement pas les colonnes d'entrée vers les colonnes de sortie du même nom.
|
|
|
00
|
|
|
#17 |
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 477 ![]() |
c'était bien ça, bon voilà une transformation de finie, j'attaque les autres maintenant
|
|
|
00
|
|
|
#18 |
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 477 ![]() |
pour ma nouvelle transformation j'ai besoin de mettre une chaine de caractères qui est en minuscule en majuscule, toujours dans mon javarow, j'ai utilisé la methode toUpperCase() comme ceci
Code :
output_row.NAME=toUpperCase(input_row.NAME) ça veut dire que talend ne prend pas cette méthode en compte ou que les méthodes ne sont pas toutes définies et que je les définir quelque part? |
|
|
00
|
|
|
#19 |
|
Membre Expert
![]() Benoit DurandConsultant en Business Intelligence Freelance Inscription : mars 2005 Messages : 817 ![]() |
Ce n'est pas du java. Le code correct doit être :
output_row.NAME=input_row.NAME.toUpperCase(); http://java.sun.com/javase/6/docs/ap...ng/String.html edit : Ce n'est pas du java. => ton code n'est pas interprétable en java |
|
|
00
|
|
|
#20 |
|
Membre éclairé
![]() Inscription : janvier 2007 Messages : 477 ![]() |
en effet c'était ça mais pourquoi dis tu que ce n'est pas du java???
En tout cas maintenant je commence à comprendre talend et je m'amuse comme un fou (on a le droit de dire ça??? ![]() ![]() )
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com