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 :

Stocker résultat d'une requête dans une (ou plusieurs ?) variable globale


Sujet :

Développement de jobs

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 31
    Par défaut Stocker résultat d'une requête dans une (ou plusieurs ?) variable globale
    Bonjour à tous,

    En désespoir de cause je crée un sujet car je traine là dessus depuis des jours et je ne sais plus par quel bout prendre mon problème !

    Pourriez-vous m'expliquer quelles sont les étapes à suivre et quels composants utiliser (ou me donner le lien d'un tuto qui explique tout ça CLAIREMENT !!) afin de stocker le résultat d'une requête dans une ou plusieurs variables et comment appeler ces variables par la suite ??
    (à terme c'est pour envoyer ces résultats ds un mail !).

    Voilà ma requête de base :
    Code : 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
    select  ZONE_TECHNIQUE.TECH_STATS.job, 
            min (ZONE_TECHNIQUE.TECH_STATS.moment) as dt_debut,
            max(ZONE_TECHNIQUE.TECH_STATS.moment) as dt_fin, 
            coalesce (ZONE_TECHNIQUE.TECH_STATS.message, 'success') as statut , 
            round (sum (ZONE_TECHNIQUE.TECH_STATS.duration)/1000,0) as duree_sec, 
            max(ZONE_TECHNIQUE.TECH_TRACES.nb_insert) as nb_ins, 
            max(ZONE_TECHNIQUE.TECH_TRACES.nb_update) as nb_upd, 
            max (ZONE_TECHNIQUE.TECH_TRACES.nb_delete) as nb_del 
    from ZONE_TECHNIQUE.TECH_STATS 
    left outer join ZONE_TECHNIQUE.TECH_TRACES  on ZONE_TECHNIQUE.TECH_STATS.pid=ZONE_TECHNIQUE.TECH_TRACES.pid
    where ZONE_TECHNIQUE.TECH_STATS.moment>trunc(sysdate)
    and (ZONE_TECHNIQUE.TECH_STATS.job like '%_DIM' or ZONE_TECHNIQUE.TECH_STATS.job like '%_DW')
    group by  ZONE_TECHNIQUE.TECH_STATS.pid, 
              ZONE_TECHNIQUE.TECH_STATS.job, 
              coalesce (ZONE_TECHNIQUE.TECH_STATS.message, 'success') 
    order by  min (ZONE_TECHNIQUE.TECH_STATS.moment) desc, 
              ZONE_TECHNIQUE.TECH_STATS.job desc
    J'aimerais ressortir tous les résultats qui correspondent aux champs suivants :
    JOB | DTE_DEBUT | DTE_FIN | STATUT | DUREE_SEC | NB_INS ....

    Voilà ce que j'ai essayé de faire en m'aidant des différents topics mais qui ne fonctionne pas

    - un tOracleInput dans lequel j'ai ma requête suivante :
    Code : 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
    "select  ZONE_TECHNIQUE.TECH_STATS.job," 
            + (globalMap.get("DT_DEBUT")) + " as dt_debut,"
            + (globalMap.get("DT_FIN")) + " as dt_fin, "
            + (globalMap.get("STATUT")) + " as statut ", 
            + (globalMap.get("DUREE_SEC")) + "as duree_sec," 
            + (globalMap.get("NB_INS")) + "as nb_ins", 
            + (globalMap.get("NB_UPD")) + " as nb_upd, "
            + (globalMap.get("NB_DEL")) + "as nb_del 
    from ZONE_TECHNIQUE.TECH_STATS 
    left outer join ZONE_TECHNIQUE.TECH_TRACES  on ZONE_TECHNIQUE.TECH_STATS.pid=ZONE_TECHNIQUE.TECH_TRACES.pid
    where ZONE_TECHNIQUE.TECH_STATS.moment>trunc(sysdate)
    and (ZONE_TECHNIQUE.TECH_STATS.job like '%_DIM' or ZONE_TECHNIQUE.TECH_STATS.job like '%_DW')
    group by  ZONE_TECHNIQUE.TECH_STATS.pid, 
              ZONE_TECHNIQUE.TECH_STATS.job, 
              coalesce (ZONE_TECHNIQUE.TECH_STATS.message, 'success') 
    order by  min (ZONE_TECHNIQUE.TECH_STATS.moment) desc, 
              ZONE_TECHNIQUE.TECH_STATS.job desc"
    - associé via un lien main à un tSetGlobalVar dont vous pouvez voir les clé | valeurs en pièce jointe

    - associé via un lien main un tLogRow pour voir si ça me récupère qquechose...
    Bien évidemment ça ne fonctionne pas et j'ai tout un tas d'erreur au lancement du job : il ne démarre même pas !

    --> Comment faire step by step ?
    Je vous remercie par avance pour votre indulgence quant à mon niveau Talend et pour votre préciseuse aide !
    Images attachées Images attachées   

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 106
    Par défaut
    Bonjour,
    Moi j'utilise des variables globales dans mes jobs talend, ceux sont des résultats des requêtes et elles sont utilisées dans d'autres requêtes dans d'autres composants bien sur.
    je te conseille de bien voir le type de chaque variable globale, dans les composants qui manipulent ses variables globales, tu vérifie aussi leurs types dans les liens entres les composants tels que les rows (les flèches) et en fin tu peux utiliser un autre composant tel que TflowToIterate pour contenir les variables globales.

  3. #3
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Commençons par le commencement.

    Tu peux déjà essayer de supprimer ton "tSetGlobalVar" et de connecter directement ton tOracleInput à un tLogRow.

    Pour que ça fonctionne, il faut que :
    • Les schémas des deux composants soient identiques.
    • Le schéma du tOracleInput corresponde (nom et type des colonnes) aux différents champs récupérés de la base. Dans ton cas, le schéma doit donc être composé de 8 colonnes.


    Ce job devrait au moins fonctionner et montrer ce qui est extrait de la base (à défaut de faire quelque chose d'utile pour le moment…). Si ce n'est pas le cas, il y a très probablement une erreur au niveau des paramètres du composant tOracleInput.
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  4. #4
    Modérateur
    Avatar de XxArchangexX
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2012
    Messages
    1 159
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mars 2012
    Messages : 1 159
    Par défaut
    Bonsoir,

    Juste pour orienter l'aide, il y a un autre topic : notification d'execution et tSendMail qui analyse son problème, le tOracleInput fonctionne si j'ai bien suivi, son problème se situe sur une façon propre et facile d'utiliser ces résultats pour les mettre dans un mail. J'ai décris une procédure pour utiliser cela mais étant débutant en Talend il y a peut être et surement mieux.
    L'Etat est bien administré quand l'escalier de l'école est usé et que l'herbe croît sur celui du tribunal.

    Modérateur BI

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 31
    Par défaut
    Bonjour à tous et tout d'abord merci à vous pour votre aide !

    Comme le dis Archange mon tOracleInput fonctionne, mon problème s'est donc décalé un peu plus loin lorsque je veux récupérer les résultats de mes variables ds mon tSendMail et c'est effectivement le sujet que j'ai créé sur un autre post.
    Je vais donc essayer d'aller mettre en application les conseils qui m'ont été apporté sur ce post et vous tiens au courant...

Discussions similaires

  1. Réutiliser des données d'une requête dans une requête
    Par mims1664 dans le forum Requêtes
    Réponses: 12
    Dernier message: 06/02/2009, 14h12
  2. Résultat d'un champ d'une requête dans une variable
    Par PsychedeChed dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 11/01/2009, 12h50
  3. Réponses: 4
    Dernier message: 02/07/2008, 11h32
  4. Réponses: 2
    Dernier message: 02/06/2006, 11h26
  5. Réponses: 4
    Dernier message: 01/12/2005, 14h36

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