|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 12 ![]() |
Rebonjour a tous !
Je rencontre un problème lors de ma collecte de données, je m'explique : Je désire convertir une variable float en string en utilisant la fonction "String.valueOf(variable)". Lors de l'exécution, je ne rencontre pas de problème mais lorsque je vérifie la collecte, je remarque que ma variable prend la valeur 1.0 (en caractère) au lieu de 1 (en numérique). Pourtant ma variable numérique en entrée est définie sans décimale. Avez vous une idée !!!??? Merci d'avance |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() |
à mon avis, tu es plus dans un problème pur java que Talend.
tu as essayé de reproduire dans une classe java ? tu peux essayer avec la méthode toString de Float aussi. |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 12 ![]() |
Hello Smallet !!!
J'ai essayé plusieurs fonction tel que : String.valueOf(ma variable) Float.toString(ma variable) DataOperation.CHAR(ma variable) Toutes ces fonctions s'exécutent sans problème, mais à l'affichage, j'ai bien mon nombre suivi de ".0" Quant à la programmation en java, je n'y comprend pas grand chose quand j'entre dans le code source : Float.toString(EVP.NUMEVE) + Float.toString(EVP.NUMPOS) et je ne peux pas modifier le code source !! |
|
|
00
|
|
|
#4 | ||
|
Membre habitué
![]() |
le code suivant:
Code :
Ca te convient ? Sinon, tu peux regarder les différent pattern de formatage dans la doc de la classe DecimalFormat (http://java.sun.com/j2se/1.5.0/docs/...malFormat.html) |
||
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 12 ![]() |
Merci Smallet !!!
Je comprend bien cette histoire de format, mais le problème avec le logiciel Talend, c'est que je ne peux pas modifier le code source, je ne peux utiliser que des fonctions. Quand j'entre dans le code (qui fait 6000 lignes !!!) généré par le logiciel, il n'y a pas de lignes concernant le format des "float". Il existe peut-être une option ou une configuration particulière dans le logiciel ! Je ne sais pas !!!! Sinon, j'ai un autre souci concernant les filtres : Je souhaite filtrer les données de ma table source sur la variable date_extraction, mais je n'y parvient pas en utilisant le tFilterRow (car il n'y a pas la possibilité de choisir un type Date) ou dans le composant tMap ! row1.DATE_EXTRACTION == TalendDate.getCurrentDate() Aurait tu autre idée ? Merci d'avance ! |
|
|
00
|
|
|
#6 |
|
Membre habitué
![]() |
En fait dans ton composant de lecture (tMysqlInput ou tFileInputDelimited par exemple), tu définis une colonne de type Float, et ensuite dans un mapper tu la mappe avec une colonne de type String et là tu met l'expression souhaitée pour transformer de Float en String.
Sinon, sur les dates, pour moi pas de problème pour filtrer sur la date dans le tFilterRow. Essaye et dit moi si tu coinces toujours. |
|
|
00
|
|
|
#7 |
|
Invité régulier
![]() Inscription : avril 2008 Messages : 18 ![]() |
Pour le pb du float :
Une autre idée est d'écrire une routine que tu appelles ensuite dans ton tMap ci-dessous le code : package routines; import java.text.DecimalFormat; public class MyRoutines { public static String convertFloatToString(Float f) { String str; DecimalFormat d = new DecimalFormat("0"); str=d.format(f); return str; } } Bon courage ... |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 12 ![]() |
Bonjour à tous !
Concernant le souci de conversion de float en string, merci selig !!! J'ai créer une routine eny recopiant le code et ensuite j'ai fais appel à cette routine dans le composant tMap. Pour mon problème de comparaison de date, je précise : J'ai une variable en entrée qui est la date d'extraction des données au format date et je souhaite collecter les données dont la date d'extraction est égale à la date du jour !!! Je sais maintenant que pour poser un filtre sur un FLOAT on utilise == (ex : row1.NUMEVE == 1) et pour un STRING on utilise equals() (ex : row1.LIBMAG.equals("magasin 1")). Par contre quand je souhaite filtrer mes données sur la date d'extraction, aucun des opérateurs (== ou equals()) ne fonctionne. J'ai donc essayer avec le tFilterRow mais le menu deroulant ne permet pas de sélectionner un type date, j'ai donc tout de même essayer avec les choix possible en saisissant TalendDate.getCurrentDate() en valeur de comparaison mais toujours aucune ligne dans ma table de sortie !!!! Smallet peux-tu m'expliquer comment tu a procédé avec le tFilterRow si tes variables sont bien de type date !! Merci d'avance!!! |
|
|
00
|
|
|
#9 |
|
Invité régulier
![]() Inscription : avril 2008 Messages : 18 ![]() |
Hello,
essaye avec tadate1.compareTo(tadate2)==0 .. ça devrait marcher. a+ |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Inscription : avril 2008 Messages : 12 ![]() |
Merci Selig !!!
Ca fonctionne bien dans le tMap mais uniquement lorsque je saisis une date et pas quand j'utilise la fonction getCurrentDate qui renvoie la date du jour ! Je pense qu'il faut que je trouve le moyen de créer une variable globale qui enregistre la date du jour afin de pouvoir la comparer à la date d'extraction de mes données !!! |
|
|
00
|
|
|
#11 |
|
Membre habitué
![]() |
pour moi, ton problème c'est que getCurrentDate te renvois la date ET l'heure courante
|
|
|
00
|
|
|
#12 |
|
Candidat au titre de Membre du Club
![]() Inscription : avril 2008 Messages : 22 ![]() |
pour créer ta variable :
TalendDate.getDate("DD/MM/YYYY") ça devrait marcher apres pour comparer |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com