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 :

tFilterRow : utiliser le contenu d'une variable tSetGlobalVar


Sujet :

Développement de jobs

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 80
    Points : 88
    Points
    88
    Par défaut tFilterRow : utiliser le contenu d'une variable tSetGlobalVar
    Bonjour,

    J'ai un fichier csv en entrée que je souhaite filtrer avec le composant tFilterRow.
    Je souhaite utiliser le mode avancé de mon tFilterRow, c'est-à-dire, écrire en toutes lettres l'expression du filtre comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input.row.monchamp.equals("mavaleur")...
    Mon problème est le suivant : dans l'expression de mon filtre, le nom du champ "monchamp" n'est pas connu d'avance et il doit être calculé à la volée et en amont de mon composant tFilterRow. Pour cela :

    1. Je récupère le nom du champ sur lequel je souhaite appliquer le filtre, ici, il s'agit de monchamp (monchamp est forcément présent dans le schéma du fichier à lire en entrée)
    2. Je génère l'expression de mon filtre en toutes lettres : input.row.monchamp.equals("mavaleur")
    3. Je stocke l'expression de mon filtre dans une variable tSetGlobalVar
    4. Je saisis dans mon composant tFilterRow ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((String)globalMap.get("mon_expression_filtre"))
    Talend en veut rien savoir et il me dit qu'il ne peut pas convertir un string en boolean.
    Je m'attendais tout simplement à ce qu'il substitue
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((String)globalMap.get("mon_expression_filtre"))
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    input.row.monchamp.equals("mavaleur")
    mais visiblement, cela ne fonctionne pas.

    Auriez-vous une idée svp ?

    Merci pour votre aide.

    Merci

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 80
    Points : 88
    Points
    88
    Par défaut
    Bonjour,

    Après une série de tests, j'ai pu résoudre le problème en utilisant un autre composant à la place du composant tFilterRow.
    En effet, le composant tFilterRow n'arrive pas à substituer la valeur de la variable dans "Utiliser le mode avancé"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((String)globalMap.get("mon_expression_filtre"))
    J'ai utilisé à la place le composant tHSQLDbInput. Dans le cadran "Guess Query", ce composant arrive à susbtituer correctement la valeur de ma variable.
    Voici comment l'appeler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT *  FROM  matable WHERE "+ ((String)globalMap.get("expression_filtre"))+"
    Ce qui donnera au final le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT *  FROM  matable WHERE monchamp='mavaleur'

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

Discussions similaires

  1. [Vxi3] Utilisation du contenu d'une variable dans Où
    Par ruru9 dans le forum Deski
    Réponses: 4
    Dernier message: 29/07/2013, 16h44
  2. Réponses: 10
    Dernier message: 24/08/2012, 11h17
  3. [XL-2003] Utiliser le contenu d'une variable en VBA
    Par Adweuz dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/07/2012, 15h33
  4. Réponses: 1
    Dernier message: 20/06/2012, 14h07
  5. Utilisation du contenu d'une variable
    Par titan66 dans le forum ActionScript 3
    Réponses: 4
    Dernier message: 11/04/2011, 08h31

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