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

Talend Discussion :

NullPointerException date null


Sujet :

Talend

  1. #1
    Membre à l'essai
    Femme Profil pro
    Stagiaire BI
    Inscrit en
    Août 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire BI
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 70
    Points : 22
    Points
    22
    Par défaut NullPointerException date null
    Bonjour,

    Je suis débutante sur Talend.

    J'ai un tposgresqlInput qui contient des date qui ont ce format 18MAY2015:00:00:00 j'ai converti string en date en faisant ceci

    TalendDate.parseDateLocale("ddMMMyyyy:HH:mm:ss",test.date_debut,"EN"). J'ai un NullpointEcxeption comme erreur. Savez vous comment je peux gérer les dates null svp?


    PS: ça me donne le résultat attendu pour les colonnes qui n'ont pas de date manquante que j'ai effectué sur d'autres tables.

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur d'études entrepôt de données
    Inscrit en
    Mars 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur d'études entrepôt de données
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2006
    Messages : 104
    Points : 126
    Points
    126
    Par défaut
    Bonjour Lindaz,

    Tu vas vite te rendre compte que les valeurs "null" sont compliquées à gérer, ou tout du moins, qu'il faut toujours en tenir compte!

    Le problème est que, dans tes données, tu reçois des valeurs null et tu tentes ensuite de les donner à une fonction qui n'accepte pas les "null".

    Une solution est d'utiliser la syntaxe conditionnelle : test ? si_oui : si_non

    Dans ton cas, tu pourrais remplacer ce que tu as écris par :

    test.date_debut == null ? null : TalendDate.parseDateLocale("ddMMMyyyy:HH:mm:ss",test.date_debut,"EN")


    Qu'est-ce que ca va faire ?
    Si le résultat du test est vrai (date_debut est null), alors tu mets null dans la variable cible.
    Si le résultat est faux (pas null), alors tu parses ta date !

    Attention, dans la variable cible la case "nullable" doit être cochée, sinon tu auras aussi un null pointer exception. Idem, si date_debut n'est pas en "nullable".

    Il y a d'autres solutions mais il faudrait en savoir plus sur ce que tu tentes précisement.
    Par exemple tu pourrais filtrer les lignes pour lesquelles la date est null.
    Tu pourrais aussi mettre une date par défaut.
    Ces deux solution peuvent être faites via des composants, ou dans la requête SQL directement (si tu attaque une BDD).


    Cordialement,

  3. #3
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Citation Envoyé par cocaaladioxine Voir le message
    test.date_debut == null ? null : TalendDate.parseDateLocale("ddMMMyyyy:HH:mm:ss",test.date_debut,"EN")
    Il est plus recommandé de faire un Relational.ISNULL(variable) plutôt que variable == null

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur d'études entrepôt de données
    Inscrit en
    Mars 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur d'études entrepôt de données
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2006
    Messages : 104
    Points : 126
    Points
    126
    Par défaut
    @MythOnirie

    Juste par curiosité, quel est l'avantage de l'un sur l'autre?

    Cordialement,

  5. #5
    Membre à l'essai
    Femme Profil pro
    Stagiaire BI
    Inscrit en
    Août 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire BI
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 70
    Points : 22
    Points
    22
    Par défaut
    Merci votre réponse rapide. J'essaie vos suggestions et je vous tiens au courant.

  6. #6
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Citation Envoyé par cocaaladioxine Voir le message
    @MythOnirie

    Juste par curiosité, quel est l'avantage de l'un sur l'autre?

    Cordialement,
    Au niveau du code il n'y a pas de différence car la routine effectue la même vérification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public static boolean ISNULL(Object variable) {
            return variable == null;
        }
    Cependant la lecture est, à mon sens, bien plus aisé avec le ISNULL qu'avec le == null.

    Du coup, j'avoue que mon message était un peu plus strict que la réalité

  7. #7
    Membre à l'essai
    Femme Profil pro
    Stagiaire BI
    Inscrit en
    Août 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire BI
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 70
    Points : 22
    Points
    22
    Par défaut
    Nom : ==null.png
Affichages : 2183
Taille : 136,6 Ko

  8. #8
    Membre à l'essai
    Femme Profil pro
    Stagiaire BI
    Inscrit en
    Août 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire BI
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 70
    Points : 22
    Points
    22
    Par défaut
    Nom : ISNULL.png
Affichages : 2003
Taille : 137,0 Ko

  9. #9
    Membre habitué
    Homme Profil pro
    Ingénieur d'études entrepôt de données
    Inscrit en
    Mars 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur d'études entrepôt de données
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2006
    Messages : 104
    Points : 126
    Points
    126
    Par défaut
    @MythOnirie

    J'imagine que ca dépend un peu du passif en programmation de chacun

    Mais je ne connaissais pas cette écriture, on en apprend tous les jours, merci!

    Bonne journée à toi!

  10. #10
    Membre à l'essai
    Femme Profil pro
    Stagiaire BI
    Inscrit en
    Août 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire BI
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 70
    Points : 22
    Points
    22
    Par défaut
    Nom : 1ere.png
Affichages : 1954
Taille : 63,3 Ko

  11. #11
    Membre à l'essai
    Femme Profil pro
    Stagiaire BI
    Inscrit en
    Août 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire BI
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 70
    Points : 22
    Points
    22
    Par défaut
    Nom : 2017-07-10-153339_1280x1024_scrot.png
Affichages : 1984
Taille : 137,0 Ko

  12. #12
    Membre à l'essai
    Femme Profil pro
    Stagiaire BI
    Inscrit en
    Août 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire BI
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 70
    Points : 22
    Points
    22
    Par défaut
    J'ai essayé les 2 méthodes mais, ça me sort une erreur impression d'écran ci-dessus.

  13. #13
    Membre habitué
    Homme Profil pro
    Ingénieur d'études entrepôt de données
    Inscrit en
    Mars 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur d'études entrepôt de données
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2006
    Messages : 104
    Points : 126
    Points
    126
    Par défaut
    @Lindaz,

    C'est parceque c'est parseDateLocale ( p minuscule), et non ParseDateLocale.

    Cordialement,

  14. #14
    Membre à l'essai
    Femme Profil pro
    Stagiaire BI
    Inscrit en
    Août 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire BI
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 70
    Points : 22
    Points
    22
    Par défaut
    Merci beaucoup je n'ai plus d'erreur.

  15. #15
    Membre à l'essai
    Femme Profil pro
    Stagiaire BI
    Inscrit en
    Août 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire BI
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 70
    Points : 22
    Points
    22
    Par défaut
    J'ai encore une autre question. j'ai des dates qui ont ce format 201501 et j'ai rajouté le dernier jour du mois j'ai obtenu quelque chose de ce genre 1600-01-31. Je voudrai mettre la date 160001 à null.

    J'ai utilisé ce code, mais il ne met pas la date à null.

    table.naiss =="160001" ? null : TalendDate.getLastDayOfMonth(TalendDate.parseDateLocale("yyyyMM",table.naiss,"EN"))

    Merci de votre aide.

  16. #16
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Bonjour,

    peut-être est-ce un problème lors du test d'égalité. Pouvez-vous essayer avec : "160001".equals(table.nais) ?

  17. #17
    Membre habitué
    Homme Profil pro
    Ingénieur d'études entrepôt de données
    Inscrit en
    Mars 2006
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur d'études entrepôt de données
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mars 2006
    Messages : 104
    Points : 126
    Points
    126
    Par défaut
    pour comparer des chaines de caractères tu dois utiliser la méthode ".equals()" des objets de type String.

    exemple : table.naiss.equals("160001") ? null : .....

    Par contre, attention de ne pas vouloir gérer trop de cas particuliers, tu risques de t'y perdre!

    Je ne sais pas d'où vient ta donnée, mais elle ne me parait pas très "propre".
    Vu que tu as des null et des valeurs incohérentes, fait attention que tu risques aussi d'avoir des chaines qui ne sont pas réellement des dates.
    (genre 201x0102 => ca va aussi provoquer des erreurs à l'exécution).
    Il y a peut-être des actions à mener en amont.

    (Je me demande toujours pourquoi on met des dates dans des chaines de caractère... Reste-t-il réellement des BDD sans type date?)

  18. #18
    Membre à l'essai
    Femme Profil pro
    Stagiaire BI
    Inscrit en
    Août 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire BI
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 70
    Points : 22
    Points
    22
    Par défaut
    Merci pour votre aide.

    J'ai utilisé ce code

    table.naiss.equals("160001") ? null : TalendDate.getLastDayOfMonth(TalendDate.parseDateLocale("yyyyMM",table.naiss,"EN"))

    et j'ai cette erreur.

    cocaaladioxine pour cette table je n'ai pas de valeur nulle, mais je voudrais mettre la date 160001 à null. Merci pour les conseils.

    Nom : naissance.png
Affichages : 1981
Taille : 222,6 Ko

  19. #19
    Membre éclairé Avatar de MythOnirie
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Juin 2012
    Messages
    376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Juin 2012
    Messages : 376
    Points : 795
    Points
    795
    Par défaut
    Bonjour, il indique que le traitement essaie d'insérer une valeur nulle dans la colonne death_date ce qui est interdit par une contrainte dans la base de donnée.

  20. #20
    Membre à l'essai
    Femme Profil pro
    Stagiaire BI
    Inscrit en
    Août 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Stagiaire BI
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2014
    Messages : 70
    Points : 22
    Points
    22
    Par défaut
    Bonjour,
    Oui MythOnirie la colonne était à NOT NULL dans la base de données du coup je l'ai mis à NULL. J'ai obtenu ce résultat, j'ai du vide au lieu de null. Comme c'est une date je ne peux pas avoir du null dans la colonne?

    Merci d'avance.

    Nom : image.png
Affichages : 1941
Taille : 211,2 Ko

Discussions similaires

  1. [ date ] null
    Par hocinema dans le forum Oracle
    Réponses: 4
    Dernier message: 15/12/2005, 11h34
  2. problème avec les dates nulles
    Par shingo dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 30/09/2005, 12h32
  3. [Delphi & DBExpress ] Mettre un champs date à null
    Par falcon dans le forum Bases de données
    Réponses: 10
    Dernier message: 03/11/2004, 08h21
  4. Date nulle dans une requete paramétrée avec TParameter
    Par denrette dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/06/2004, 08h37
  5. recherche Date nulle dans une table
    Par lol_adele dans le forum Bases de données
    Réponses: 6
    Dernier message: 16/04/2004, 14h06

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