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 :

utilisation d'une variable de context dans un tJavaRow


Sujet :

Développement de jobs

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 43
    Points : 32
    Points
    32
    Par défaut utilisation d'une variable de context dans un tJavaRow
    Bonjour,

    Je souhaite utiliser une variable de contexte dans un tJavaRow,
    mes variables de contexte sont les suivantes: E1, E2, E3, S1, S2, S3
    Les variables 'context.E1', 'context.E2', 'context.E3' contiennent le nom des champs qui arrivent en entrée du tJavaRow et les variables 'context.S1', 'context.S2', 'context.S3' contiennent le nom des champs qui sorte du tJavaRow.


    j'avais pensé à la solution suivante :

    output_row.context.S1 = input_row.context.E1;
    output_row.context.S2 = input_row.context.E2;
    output_row.context.S3 = input_row.context.E3;

    cela produit une erreur :
    row1.context n'est pas un champ ou ne peut pas être résolue
    row2.context n'est pas un champ ou ne peut pas être résolue
    row1.context n'est pas un champ ou ne peut pas être résolue
    row2.context n'est pas un champ ou ne peut pas être résolue
    row1.context n'est pas un champ ou ne peut pas être résolue
    row2.context n'est pas un champ ou ne peut pas être résolue


    je voudrais que Talend tienne compte de "context.S1", ... en entier

    Si vous avez une solution.....
    Merci d'avance,

    Florian

  2. #2
    Membre expérimenté Avatar de Benoit_Durand
    Profil pro
    Consultant en Business Intelligence Freelance
    Inscrit en
    Mars 2005
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence Freelance

    Informations forums :
    Inscription : Mars 2005
    Messages : 861
    Points : 1 308
    Points
    1 308
    Par défaut
    Si ce sont des variables de contexte il ne faut pas mettre les les output_row/input_row. Ces variables ne sont pas rattachées à un flux.

  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 : 41
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par Hebus_Beer Voir le message
    Si ce sont des variables de contexte il ne faut pas mettre les les output_row/input_row. Ces variables ne sont pas rattachées à un flux.
    +1.

    Pour compléter cette réponse, j'ajouterai que les variables de contexte peuvent être vues comme des variables globales.

    Elles sont normalement chargées une fois pour toute en début de job, et accessibles ensuite n'importe où dans le job, indépendamment des flux de données. Syntaxiquement, on les utilise avec la syntaxe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String varLocale = Context.maVariable;
    Si tu veux des variables accessibles partout dans le code, mais changeant de valeur au cours de l'exécution (comme pour le composant tFileList par exemple), il faut plutôt utiliser la "globalMap" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    globalMap.put("nomVariable", "valeurVariable");
    globalMap.get("nomVariable");

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 43
    Points : 32
    Points
    32
    Par défaut utilisation d'une table de mapping
    Merci Hebus_beer pour ce conseil, j'ai une autre question dsl .

    J'aimerais savoir si il est possible d'utiliser une table pour gérer le mapping des champs en entrée pour les envoyer en sortie comme écris dans la table. voir exemple ci-joins.

    L'objectif étant de rendre générique un job de traitement, je souhaiterais que ce mapping soit dynamique, c'est à dire qu'il existerait plusieurs tables de mapping mais une seule serait chargé dans un tLoadContext en fonction du fichier à traiter.

    Je veux juste savoir si c'est possible, et si oui comment démarrer...
    merci d'avance,

    Florian
    Images attachées Images attachées  

  5. #5
    Membre expérimenté Avatar de Benoit_Durand
    Profil pro
    Consultant en Business Intelligence Freelance
    Inscrit en
    Mars 2005
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence Freelance

    Informations forums :
    Inscription : Mars 2005
    Messages : 861
    Points : 1 308
    Points
    1 308
    Par défaut
    Je vous conseille de créer un nouveau topic avec quelques précisions en plus.

    Si la table en entrée n'est pas connue (nom de la table, nombre de colonnes, nom des colonnes) idem pour la sortie, ça doit se faire.

    Il faut au moins une table de transco du genre (nom_traitement,nom_table_entree,nom_colonne_entree,nom_table_sortie,nom_colonne_sortie) et passer le nom du traitement au job talend pour qu'il cherche les données nécessaires dans la table.
    Le but du jeu est de générer le sql qui va bien à partir de cette table. par contre dans Talend les schémas doivent être définis donc pourquoi pas passer par des tSGBDRow pour passer outre cette limite.

    Il faudrait créer un nouveau topic ^^

    cdt,

Discussions similaires

  1. Utilisation d'une variable de jsp dans un scriptlet
    Par franchouze dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 04/08/2009, 15h29
  2. [Talend] - Utilisation d'une variable de context dans un tPostgresqlInput
    Par lolotte35 dans le forum Développement de jobs
    Réponses: 5
    Dernier message: 07/11/2007, 15h17
  3. Réponses: 9
    Dernier message: 05/07/2005, 08h37
  4. Utilisation d'une Variable(Vb) dans d'autre language
    Par cach dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/02/2005, 12h00
  5. Pl/SQL utilisation d'une variable dans un select
    Par larg dans le forum PL/SQL
    Réponses: 17
    Dernier message: 30/11/2004, 17h08

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