1. #1
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : mars 2017
    Messages : 12
    Points : 9
    Points
    9

    Par défaut tmap avec plusieurs expression context

    Bonjour,
    Je suis un utilisateur occasionnel de Talend, je rencontre le problème suivant:
    Soit 3 variable en entrée
    var programme = 1
    var programme = 2
    var programme = 3
    Avec 3 context talend
    Context A, Context B, Context C .
    Je veux associer chaque enregistrement correspondant de mon fichier d'entrée a tel ou tel type d'enregistrement.
    if
    Var.Programme == 1 , context A
    else
    var programme == 2 context B
    else
    var programme == 3 context C
    j’essaie d'utiliser la notation ternaire : de la façon suivante
    (Var.Programme == 1 ) ? context.A : ( Var.Programme == 2 ? context.B : ( Var.Programme == 3 ? context.C :null ) )

    Mais cela ne fonctionne pas, j'ai raté quelque chose que je ne vois pas ?

    Merci pour votre aide

  2. #2
    Membre éprouvé Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2010
    Messages
    547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2010
    Messages : 547
    Points : 1 095
    Points
    1 095

    Par défaut

    Bonjour,

    j’essaie d'utiliser la notation ternaire : de la façon suivante
    (Var.Programme == 1 ) ? context.A : ( Var.Programme == 2 ? context.B : ( Var.Programme == 3 ? context.C :null ) )

    Mais cela ne fonctionne pas, j'ai raté quelque chose que je ne vois pas ?
    C'est quoi ton erreur ?

    Peux-tu mettre la valeur null ? i.e. (Est-ce de type jav.lang.Integer ou int )
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discutions est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : mars 2017
    Messages : 12
    Points : 9
    Points
    9

    Par défaut

    Citation Envoyé par supergeoffrey Voir le message
    Bonjour,



    C'est quoi ton erreur ?

    Peux-tu mettre la valeur null ? i.e. (Est-ce de type jav.lang.Integer ou int )

    Bonjour,

    AU fait quand j'ai deux paramètres cela fonctionne très bien comme ceci
    (Var.Programme == 1 || Var.Programme == 2 ) ? context.salesforce_rt_account : context.salesforce_rt2_account

    si je rajoute un 3 eme paramètres comme ceci

    (Var.Programme == 1 ) ? context.salesforce_rt_account : ( Var.Programme == 2 ? context.salesforce_rt2_account : ( Var.Programme == 3 ? context.salesforce_rt3_account : null ) )

    les enregistrements sont intégrés dans ma base quelque soit le type de programm 1,2 ou 3 avec une valeur null

    voici le screen de mon tMap
    Nom : screen.png
Affichages : 64
Taille : 200,5 Ko

    Merci pour ton aidePièce jointe 259608

  4. #4
    Membre éprouvé Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2010
    Messages
    547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2010
    Messages : 547
    Points : 1 095
    Points
    1 095

    Par défaut

    Plusieurs pistes
    Teste dans l'ordre que je te donne
    _____________________________


    Pourquoi le type de Programme est modifier entre ton entrée "In_in_porteur_de_carte" et tes variable temporaires ? Tu transformes gratuitement un entier en un double !
    Tu devrais rester sur un entier Nullable.
    Et ensuite je modifierai la valeur en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Var.Programme == null ? null :   Var.Programme.intValue() == 1 ? context.salesforce_rt_account :  Var.Programme.intValue()  == 2 ? context.salesforce_rt2_account :  Var.Programme.intValue()  == 3 ? context.salesforce_rt3_account : null
    _______________________________

    As-tu vérifier que tu as bien initialisé, et bien créé context.salesforce_rt3_account ?


    ________________________________

    Avant tu avais une valeur pour 1 et 2 et une autre pour les autres.
    On pourrait croire que tu n'utilisait jamais context.salesforce_rt_account
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discutions est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : mars 2017
    Messages : 12
    Points : 9
    Points
    9

    Par défaut

    Citation Envoyé par supergeoffrey Voir le message
    Plusieurs pistes
    Teste dans l'ordre que je te donne
    _____________________________


    Pourquoi le type de Programme est modifier entre ton entrée "In_in_porteur_de_carte" et tes variable temporaires ? Tu transformes gratuitement un entier en un double !
    Tu devrais rester sur un entier Nullable.
    Et ensuite je modifierai la valeur en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Var.Programme == null ? null :   Var.Programme.intValue() == 1 ? context.salesforce_rt_account :  Var.Programme.intValue()  == 2 ? context.salesforce_rt2_account :  Var.Programme.intValue()  == 3 ? context.salesforce_rt3_account : null
    _______________________________

    As-tu vérifier que tu as bien initialisé, et bien créé context.salesforce_rt3_account ?


    ________________________________

    Avant tu avais une valeur pour 1 et 2 et une autre pour les autres.
    On pourrait croire que tu n'utilisait jamais context.salesforce_rt_account
    Merci pour ton retour

    les enregistrements porteur de carte en entrée de fichier on un numuro de programme
    programme 1 corresp à la Société 1
    programme 2 corresp à la société 2
    programme 3 corresp a la société 3

    les sociétés 1 ,2 et 3 sont identifier avec un type d'enregistrements recordTypeid
    recordTypeId = context.salesforce_rt_account, context.salesforce_rt2_account,context.salesforce_rt3_account

    programme 1 ---> context.salesforce_rt_account --> société 1

    programme 2 ---> context.salesforce_rt2_account --> société 2

    programme 3 ---> context.salesforce_rt3_account --> société 3

    -d'ou la transformation
    -e context.salesforce_rt3_account est bien crée
    -Avant j'avais uniquement les valeur pour 1 et 2 et pour 2 société seulement.valeur 1 pour société 1 valeur 2 pour société 2 , je veux seulement ajouté une 3 société pour integration et c'est ça qui me pose souci

    je tien à dire que c'est la première fois que je bosse sur talend le programme que je suis en train modifier existe déjà et marche correctement, avant j'avais que ce code
    (Var.Programme == 1 || Var.Programme == 2 ) ? context.salesforce_rt_account : context.salesforce_rt2_account

    Cordialement

  6. #6
    Membre éprouvé Avatar de supergeoffrey
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    octobre 2010
    Messages
    547
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2010
    Messages : 547
    Points : 1 095
    Points
    1 095

    Par défaut

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    (Var.Programme == 1 || Var.Programme == 2 ) ? context.salesforce_rt_account : context.salesforce_rt2_account

    ça voulait surement dire

    Si 1 ou 2
    Alors context.salesforce_rt_account
    Sinon context.salesforce_rt2_account

    C'est à dire que plusieurs programme peuvent être affectés à la même société.

    Essaye déjà d'énumerer les valeur de programme et fait le rapprochement leurs valeur à une société après.
    Pensez à marquer vos tickets comme résolus.
    Pensez aussi aux pour les réponses pertinantes

    Quand une discutions est résolue depuis un moment pour revenir dessus, il est mieux d'en crée une nouvelle avec un lien vers l'autre car :
    • Elle sera en haut du forum, elle sera donc plus visible
    • Une discussion résolue, on ne passe pas dessus pour aider, on passe dessus si on a le même problème
    • Tu demandes surement à tes clients de faire le même

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    mars 2017
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Finance

    Informations forums :
    Inscription : mars 2017
    Messages : 12
    Points : 9
    Points
    9

    Par défaut

    Merci pour ton aide supergeoffrey

    pour une raison que j'ignore a mon niveau ça fonctionne de cette façon

    (Var.Programme == 1 ) ? context.salesforce_rt_account( Var.Programme == 2 )?context.salesforce_rt2_account(Var.Programme == 3)?context.salesforce_rt3_account :
    null ) )

    Merci

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

Discussions similaires

  1. tMap avec plusieurs outPut sur la même table
    Par Slippropre dans le forum Développement de jobs
    Réponses: 7
    Dernier message: 19/12/2013, 17h03
  2. [Mathematica] Boucle DO avec plusieurs expressions
    Par Cjordan dans le forum Autres langages
    Réponses: 0
    Dernier message: 30/03/2011, 12h58
  3. Corps d'une fonction avec plusieurs expressions
    Par Ulrik18 dans le forum Scheme
    Réponses: 2
    Dernier message: 04/02/2011, 11h02
  4. Réponses: 2
    Dernier message: 04/01/2007, 11h37
  5. Regexp : sur expression avec plusieurs itération
    Par Yann F-FLYC dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 13/09/2006, 10h35

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