IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement de jobs Discussion :

Convertir date avec mois en lettres dans Talend


Sujet :

Développement de jobs

  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Convertir date avec mois en lettres dans Talend
    Bonjour ,

    je souhaite convertir une date du type "Dec 1; 2016 00:00:00" en un format de date yyyy-MM-dd

    Mais ça ne fonctionne pas .

    Ci-dessous le code dans mon tmap.

    TalendDate.formatDate("yyyy-MM-dd", TalendDate.parseDate("MMM dd';' yyyy HH:mm:ss", row1.newColumn1 )


    date à convertir qui est dans la variable row1.newColumn1 => Dec 1; 2016 00:00:00

    Merci de votre aide.

  2. #2
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    Citation Envoyé par onyx1329 Voir le message
    Bonjour ,

    je souhaite convertir une date du type "Dec 1; 2016 00:00:00" en un format de date yyyy-MM-dd

    Mais ça ne fonctionne pas .

    Ci-dessous le code dans mon tmap.

    TalendDate.formatDate("yyyy-MM-dd", TalendDate.parseDate("MMM dd';' yyyy HH:mm:ss", row1.newColumn1 )


    date à convertir qui est dans la variable row1.newColumn1 => Dec 1; 2016 00:00:00

    Merci de votre aide.
    Ma réponse serait que Talend n'utilise pas SimpleDateFormat... Mais un autre framework plus rapide (FastDateParser)...
    De plus seul les caractères alphabétique doivent être quoté donc "MMM dd';' yyyy HH:mm:ss" est à remplacé par "MMM dd; yyyy HH:mm:ss"
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    @ supergeoffrey Merci pour ton message mais ça ne marche toujours pas malgré l’enlèvement des quottes comme tu l'as préconisé .

    ci-dessous l'errreur obtenue .

    java.lang.RuntimeException: java.text.ParseException: Unparseable date: "Begin date"
    at routines.TalendDate.parseDate(TalendDate.java:895)
    at routines.TalendDate.parseDate(TalendDate.java:839)
    at local_project.secondjob_0_1.secondJob.tFileInputDelimited_1Process(secondJob.java:1046)
    at local_project.secondjob_0_1.secondJob.runJobInTOS(secondJob.java:1484)
    at local_project.secondjob_0_1.secondJob.main(secondJob.java:1341)
    Caused by: java.text.ParseException: Unparseable date: "Begin date"
    at java.text.DateFormat.parse(Unknown Source)
    at routines.TalendDate.parseDate(TalendDate.java:881)
    ... 4 more

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2016
    Messages : 42
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par onyx1329 Voir le message
    java.lang.RuntimeException: java.text.ParseException: Unparseable date: "Begin date"
    at routines.TalendDate.parseDate(TalendDate.java:895)
    at routines.TalendDate.parseDate(TalendDate.java:839)
    at local_project.secondjob_0_1.secondJob.tFileInputDelimited_1Process(secondJob.java:1046)
    at local_project.secondjob_0_1.secondJob.runJobInTOS(secondJob.java:1484)
    at local_project.secondjob_0_1.secondJob.main(secondJob.java:1341)
    Caused by: java.text.ParseException: Unparseable date: "Begin date"
    at java.text.DateFormat.parse(Unknown Source)
    at routines.TalendDate.parseDate(TalendDate.java:881)
    ... 4 more
    Ton fichier a certainement un entête de colonne. C'est très souvent la première colonne.
    Je suppose que la colonne que tu veux convertir c'est Begin date, et ton script est entrain de chercher à convertir cette chaine en date; ce qui n'est pas possible.

    Tu peux indiqué l’entête de colonne dans la configuration du tFileInputDelimited.

    N'hésite pas si autre difficultés.

    Cdt,
    wcfsmart

  5. #5
    Candidat au Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    @wcfsmart Merci pour ton retour.

    J'ai indiqué l’entête de colonne dans la configuration du tFileInputDelimited.
    Et ensuite j'obtiens l'erreur ci-dessous .


    En résumé comment aurais tu fais pour convertir la date suivante avec talend ?
    (Dec 1; 2016 00:00:00) to (2016/12/01 00:00:00) avec tmap de talend ?

    Merci bcp !

    Erreur Obtenue :

    Démarrage du job secondJob a 20:54 24/04/2017.
    [statistics] connecting to socket on port 3899
    [statistics] connected
    Exception in component tMap_1
    java.lang.RuntimeException: java.text.ParseException: Unparseable date: "Dec 1; 2016 00:00:00"
    at routines.TalendDate.parseDate(TalendDate.java:895)
    at routines.TalendDate.parseDate(TalendDate.java:839)
    at local_project.secondjob_0_1.secondJob.tFileInputDelimited_1Process(secondJob.java:1276)
    at local_project.secondjob_0_1.secondJob.runJobInTOS(secondJob.java:1716)
    at local_project.secondjob_0_1.secondJob.main(secondJob.java:1573)
    Caused by: java.text.ParseException: Unparseable date: "Dec 1; 2016 00:00:00"
    at java.text.DateFormat.parse(Unknown Source)
    at routines.TalendDate.parseDate(TalendDate.java:881)
    ... 4 more
    [statistics] disconnected
    Job secondJob terminé à 20:54 24/04/2017. [Code sortie=1]

  6. #6
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2016
    Messages : 42
    Points : 69
    Points
    69
    Par défaut
    Citation Envoyé par onyx1329 Voir le message
    @wcfsmart Merci pour ton retour.

    J'ai indiqué l’entête de colonne dans la configuration du tFileInputDelimited.
    Et ensuite j'obtiens l'erreur ci-dessous .


    En résumé comment aurais tu fais pour convertir la date suivante avec talend ?
    (Dec 1; 2016 00:00:00) to (2016/12/01 00:00:00) avec tmap de talend ?

    Merci bcp !

    Erreur Obtenue :

    Démarrage du job secondJob a 20:54 24/04/2017.
    [statistics] connecting to socket on port 3899
    [statistics] connected
    Exception in component tMap_1
    java.lang.RuntimeException: java.text.ParseException: Unparseable date: "Dec 1; 2016 00:00:00"
    at routines.TalendDate.parseDate(TalendDate.java:895)
    at routines.TalendDate.parseDate(TalendDate.java:839)
    at local_project.secondjob_0_1.secondJob.tFileInputDelimited_1Process(secondJob.java:1276)
    at local_project.secondjob_0_1.secondJob.runJobInTOS(secondJob.java:1716)
    at local_project.secondjob_0_1.secondJob.main(secondJob.java:1573)
    Caused by: java.text.ParseException: Unparseable date: "Dec 1; 2016 00:00:00"
    at java.text.DateFormat.parse(Unknown Source)
    at routines.TalendDate.parseDate(TalendDate.java:881)
    ... 4 more
    [statistics] disconnected
    Job secondJob terminé à 20:54 24/04/2017. [Code sortie=1]
    Je n'ai pas la possibilité de tester tout de suite, mais sinon, tu as une autre possibilité
    Talend te donne également la possibilité d'écrire tes propres routines

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Business MOdeles
    Job Designs
    Contexts
    Code
    -->Routines
    -->-->System
    .....
    SQL Templates
    Et je pense que c'est beaucoup plus flexible que tjava et autres...

    bonne journée
    wcfsmart

  7. #7
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    Il y avait deux raisons voici une routine qu'il le fait
    Je me suis aidé de ce lien pour un bug http://stackoverflow.com/questions/3...mss-a-to-mm-dd

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    package routines;
     
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Locale;
     
     
    public class JavaDateFormat {
     
    	public static final Date parseDate(String pattern, String date){
    		try{
    			//return new SimpleDateFormat(pattern).parse(date);
    			return new SimpleDateFormat(pattern,Locale.US).parse(date);
    		}
    		catch(Exception e){
    			e.printStackTrace();
    			return null;
    		}
    	}
     
    	public static final String formatDate(String pattern, Date date){
    		try{
    			//return new SimpleDateFormat(pattern).format(date);
    			return new SimpleDateFormat(pattern,Locale.US).format(date);
    		}
    		catch(Exception e){
    			e.printStackTrace();
    			return null;
    		}	
    	}	
     
    	public static void main(String[] args) {
    		System.out.println(JavaDateFormat.formatDate("yyyy-MM-dd", JavaDateFormat.parseDate("MMM dd; yyyy HH:mm:ss", "Dec 1; 2016 00:00:00" ))) ; //2016-12-01
    	}
    }
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  8. #8
    Membre du Club
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Décembre 2016
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2016
    Messages : 42
    Points : 69
    Points
    69
    Par défaut
    Bonjour,

    Avec la routine, ça marche parfaitement.

    Cependant, il était possible de le faire avec talend :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TalendDate.formatDate("yyyy-MM-dd", TalendDate.parseDateLocale("MMM dd; yyyy HH:mm:ss", "Dec 1; 2016 00:00:00","EN") )
    Dans le format de date Dec 1; 2016 00:00:00, pour une bonne interprétation de "Dec" comme étant Décembre, il faut impérativement indiquer la langue.
    Un mois comme Avril, en français Avr et en anglais Apr, l’interprétation devient impossible si on ne connait pas en quelle langue c'est écrit.

    C'est pour cela qu'au lieu d'utiliser TalendDate.parseDate, il faut plutot utiliser TalendDate.parseDateLocale en indiquant la langue. (Pour ton cas, rassure toi que c'est bien l'anglais, sinon tu n'es pas à la fin des surprises.)

    Bonne journée
    wcfsmart

  9. #9
    Candidat au Club
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2017
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2017
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Thanks all !!!!

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Talend Opend Studio for Data Integration - Activer lecture date en anglais
    Bonjour la communauté Talend,

    Débutant sur cet ETL, je bloque sur la lecture d'un champ date de mon fichier délimité ',' .

    La valeur du champ est par exemple: "Aug 18, 2019"

    Le modèle de date de ma métadonnée sur ce champ est le suivant:

    ""MMM d, yyyy"".

    Je sais que j'utilise le bon format mais malheureusement mon mois est en anglais et le message que j'obtiens est le suivant:

    Couldn't parse value for column '_timestamp' in 'row1', value is 'Aug 18, 2019'. Details: java.lang.RuntimeException: Unparseable date: "Aug 18, 2019"


    Je voudrais activer l'option "lecture" de la date en "anglais" via le module designer sans passer par le code ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TalendDate.formatDate("yyyy-MM-dd", TalendDate.parseDateLocale("MMM dd; yyyy HH:mm:ss", "Dec 1; 2016 00:00:00","EN") ).
    Y-a-il des packages supplémentaire que je dois installer? modifier un paramètre de l'outil? Activer une option?

    Merci pour votre aide.

  11. #11
    Membre expérimenté Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 795
    Points : 1 685
    Points
    1 685
    Par défaut
    1. Cette discussion est résolu. Tu as de la chance que je vois une notification dans l'historique.

    2. Il est marqué plus haut que Talend n'utilises pas SimpleDateFormat (commentaire 2)

    3. Tu réécris une routine avec SimpleDateFormat et ton problème sera résolu si tu galère je t'invite à ouvrir un ticket pour qu'il apparaît en haut du forum (commentaire 7)
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discution est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Trouver une date (mois et année) dans une colonne avec plusieurs dates
    Par merlinus3000 dans le forum Excel
    Réponses: 9
    Dernier message: 07/06/2015, 08h34
  2. Convertir date millis de la BDD dans une listview (cursor)
    Par systemz dans le forum Composants graphiques
    Réponses: 6
    Dernier message: 26/10/2013, 11h32
  3. Convertir date jj/mm/a en 01-moi-10 dans une listbox
    Par typhoon751 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/10/2010, 09h18
  4. [MySQL] [PHP] Affichage date avec mois en français
    Par vixious dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 16/06/2009, 11h30
  5. Date avec mois sur 3 lettres
    Par zizou771 dans le forum PL/SQL
    Réponses: 9
    Dernier message: 28/08/2008, 14h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo