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 14/05/2008, 15h39   #1
Invité de passage
 
Inscription : avril 2008
Messages : 12
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 12
Points : 3
Points : 3
Par défaut Convertir un float en string

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
malox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2008, 10h22   #2
Membre habitué
 
Inscription : mai 2006
Messages : 97
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 97
Points : 118
Points : 118
Envoyer un message via Skype™ à smallet
à 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.
smallet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 09h43   #3
Invité de passage
 
Inscription : avril 2008
Messages : 12
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 12
Points : 3
Points : 3
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 !!
malox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 10h06   #4
Membre habitué
 
Inscription : mai 2006
Messages : 97
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 97
Points : 118
Points : 118
Envoyer un message via Skype™ à smallet
le code suivant:
Code :
1
2
3
4
Float f1 = 1f;
Float f2 = 1.5f;
System.out.println(new DecimalFormat().format(f1));
System.out.println(new DecimalFormat().format(f2));
produit la sortie suivante:
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)
smallet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/05/2008, 11h16   #5
Invité de passage
 
Inscription : avril 2008
Messages : 12
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 12
Points : 3
Points : 3
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 !
malox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2008, 09h59   #6
Membre habitué
 
Inscription : mai 2006
Messages : 97
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 97
Points : 118
Points : 118
Envoyer un message via Skype™ à smallet
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.
smallet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2008, 13h24   #7
Invité régulier
 
Inscription : avril 2008
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 18
Points : 7
Points : 7
Par défaut Par une routine

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 ...
selig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2008, 15h45   #8
Invité de passage
 
Inscription : avril 2008
Messages : 12
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 12
Points : 3
Points : 3
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!!!
malox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2008, 16h10   #9
Invité régulier
 
Inscription : avril 2008
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 18
Points : 7
Points : 7
Hello,

essaye avec tadate1.compareTo(tadate2)==0 .. ça devrait marcher.

a+
selig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/05/2008, 17h29   #10
Invité de passage
 
Inscription : avril 2008
Messages : 12
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 12
Points : 3
Points : 3
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 !!!
malox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 09h01   #11
Membre habitué
 
Inscription : mai 2006
Messages : 97
Détails du profil
Informations personnelles :
Âge : 36
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : mai 2006
Messages : 97
Points : 118
Points : 118
Envoyer un message via Skype™ à smallet
pour moi, ton problème c'est que getCurrentDate te renvois la date ET l'heure courante
smallet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/05/2008, 15h08   #12
Candidat au titre de Membre du Club
 
Inscription : avril 2008
Messages : 22
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 22
Points : 13
Points : 13
pour créer ta variable :
TalendDate.getDate("DD/MM/YYYY")

ça devrait marcher apres pour comparer
Spacer_33 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 16h42.


 
 
 
 
Partenaires

Hébergement Web