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 :

[TOS DI][v5.3.1] passage de date en parametre pour une requete


Sujet :

Développement de jobs

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 19
    Points : 14
    Points
    14
    Par défaut [TOS DI][v5.3.1] passage de date en parametre pour une requete
    Bonjour,
    Je souhaite passer des dates en parametre a un job Talend pour une requete dans un tmysqlimput.

    La requete est la suivante:
    select *
    FROM user
    where Createdate between date_debut and date_fin

    Le job est lancé quotidiennement. Par défaut, les dates de debut et de fin doivent etre à J-1. Si le job est lancé le 28/04/2014, les dates doivent etre :
    - date_debut -> '2014-04-27 00:00:00'
    - date_fin -> '2014-04-27 23:59:59'

    Par contre, pour un rattrapage, il faut que les dates soient fournies au job.

    Avez vous des solutions?

    Merci d'avance pour votre aide.

    Cordialement.

  2. #2
    Membre actif Avatar de kayim
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2011
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2011
    Messages : 134
    Points : 283
    Points
    283
    Par défaut
    hello,

    Tu pourrais peut-être déclarer des variables de contextes date_debut/fin et dans ta requête rajouter des conditions comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AND Createdate >= To_Date("+context.date_debut+",'yyyy-MM-dd HH:mm:ss')
    AND Createdate <= To_Date("+context.date_fin+",'yyyy-MM-dd HH:mm:ss')
    Etre un homme c'est regarder le diable droit dans les yeux et lui dire d'aller se faire foutre...

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Bonjour,

    Oui c'est ok pour la partie ratrappage mais pour un fonctionnement quotidien il faut que le job utilise la date du jour -1.
    C'est la ou je bloque.

    Il faut que je trouve une solution pour faire en sorte que si les variables de context sont nulles j'utilise la date du jour-1.

  4. #4
    Membre actif Avatar de kayim
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2011
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2011
    Messages : 134
    Points : 283
    Points
    283
    Par défaut
    Hello,

    Tu peux pas utiliser un sydate()-1 ?

    Sinon dans un tSetGlobalVar en début de job, créer une variable date_begin avec comme valeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    context.date_begin==null?TalendDate.addDate(TalendDate.parseDate("yyyy-MM-dd HH",TalendDate.getDate("yyyy-MM-dd")+" " + context.hour),-1,"dd"):context.date_begin
    hour prend la valeur "00:00:00"
    Etre un homme c'est regarder le diable droit dans les yeux et lui dire d'aller se faire foutre...

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Salut,

    Selon tes recommandations, c'est ok pour la date J-1 et les dates en parametres. Le probleme se situe au niveau du test conditionnel. Il retourne toujours faux. J'ai essayé plusieurs valeurs(null,""...) mais le if retourne toujours faux

    Dans le tSetGlobalVar :
    Key Value
    date_start context.date_debut==""?TalendDate.formatDate("yyyy-MM-dd 00:00:00",TalendDate.addDate(TalendDate.getCurrentDate(), -1, "dd")):context.date_debut

    date_start context.date_fin==""?TalendDate.formatDate("yyyy-MM-dd 23:59:59",TalendDate.addDate(TalendDate.getCurrentDate(), -1, "dd")):context.date_fin


    Dans le tMSSSqlImput, la requete est :
    "select *
    FROM users
    where Createdate between \""+globalMap.get("date_start")+"\" and \""+globalMap.get("date_end")+"\";"

  6. #6
    Membre actif Avatar de kayim
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Juillet 2011
    Messages
    134
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Bâtiment

    Informations forums :
    Inscription : Juillet 2011
    Messages : 134
    Points : 283
    Points
    283
    Par défaut
    Hello,
    Pour le test, je rajouterais donc une deuxième condition (et peut-être une troisième pour l'espace " ") :

    context.date_debut=="" || context.date_debut==NULL ? ......

    tu peux debuger en faisant afficher la valeur de context.date_debut dans tMsgBox par exemple et comprendre pourquoi ta condition n'est pas vérifiée
    Etre un homme c'est regarder le diable droit dans les yeux et lui dire d'aller se faire foutre...

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Janvier 2014
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    J'ai solutionné le probleme de la maniere suivante:
    context.reprocess?context.date_debut:TalendDate.formatDate("yyyy-MM-dd 00:00:00",TalendDate.addDate(TalendDate.getCurrentDate(), -1, "dd"))
    context.reprocess?context.date_fin:TalendDate.formatDate("yyyy-MM-dd 23:59:59",TalendDate.addDate(TalendDate.getCurrentDate(), -1, "dd"))

    Avec "context.reprocess" comme variable de type boolean.

    Si j'ai un plus de temps j'essayerai de debugger le precedent test pour comprendre le pourquoi du comment !!!

    Un grand merci pour ton aide.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 05/06/2008, 11h04
  2. Réponses: 11
    Dernier message: 09/08/2007, 14h27
  3. format de la date du jour dans une requete
    Par Chauveau dans le forum Access
    Réponses: 2
    Dernier message: 21/11/2006, 21h15
  4. Date comme parametre d'une procédure stockée
    Par Access Newbie dans le forum Access
    Réponses: 3
    Dernier message: 21/08/2006, 14h47
  5. Date et Like dans une requete
    Par skunkies dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/08/2005, 18h35

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