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 :

Execution d'un job par ligne


Sujet :

Développement de jobs

  1. #1
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Points : 24
    Points
    24
    Par défaut Execution d'un job par ligne
    Bonjour,
    A partir de chaque ligne d'un fichier xml, je voudrais exécuter un sous job si la valeur du paramètre de ma ligne xml correspond à une certaine valeur.
    Pour ça j'ai fait:

    fichierxml -----row1------> tJavaFlex ----if row1.parametre=='val1'--->exécuter sousjob1
    |------if row1.parametre=='val2'--->exécuter sousjob2

    Le problème, c'est que si j'ai 2 ligne qui sortent du fichier xml, un avec le paramètre = 'val1' et l'autre avec le paramètre = 'val2', seul le sous job correspondant au paramètre de la dernière ligne est exécutée.
    On ne peut pas exécuter un job pour chaque ligne du fichier xml?
    J'ai regardé les composants de boucles mais je ne trouve pas la documentation pour tout ces composants (tForeach)
    Merci pour votre aide

  2. #2
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 195
    Points : 98
    Points
    98
    Par défaut
    Bonjour,

    En utilisant un tMap tu peux obtenir le résultat que tu souhaites (si j'ai compris ce que tu veux faire) :

    fichier xml -----> tMap
    dans le tMap, tu crées 2 sortie : outJob1, outJob2.

    Dans le filtre de outJob1, tu mets ta première condition (ex : row1.param == val1)
    Dans le filtre de outJob2, tu mets ta deuxième condition (ex : row1.param == val2)
    Tu passes ton row1.param dans les 2 outJob.

    Tu relis tes 2 sorties vers tes 2 jobs et ca devrait être bon (chez moi ca marche en tout cas).

  3. #3
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    Merci beaucoup, ça marche ! vous sauriez pas si par hasard il est possible d'ajouter un cadre (une bordure) aux données écrites en sortie dans un fichier excel?

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    Salut,
    Comment le job fils récupère les données envoyées par le père? J'ai essayé avec un tBufferInput mais ça n'a pas l'air de marcher.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2007
    Messages
    195
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 195
    Points : 98
    Points
    98
    Par défaut
    Pour le cadre je ne sais pas.

    Sinon pour passer un argument du job père au job fils, il faut faire :

    - dans le job fils, clic sur l'onglet "Contexts(job fils)", clic sur l'icone avec la croix verte pour ajouter un paramètre, et tu lui donnes le nom que tu veux (on va dire par exemple paramFils).

    - dans le job pere, 1 clic gauche (pas double clic sinon tu rentres dans le job fils) sur le job fils, tu devrais être dans l'onglet "Component", clic droit sur la croix verte, tu choisis dans paramètre "paramFils" et tu lui donnes la valeur que tu veux.

    Ensuite, dans le job fils, tu utilise ta variable en faisant : "context.paramFils"

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2009
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 41
    Points : 24
    Points
    24
    Par défaut
    Merci beaucoup!! ça marche! (par contre c'est assez lent en temps de traitement Talend non? j'ai mis 3/4 d'heure pour traiter 20000lignes ).
    Est ce que tu sais si dans un tJavaFlex, on peut avoir un schéma de sortie différent du schéma d'entrée? Par exemple , je voulais calculer des durées (entre 2 dates) au format hh:mm:ss donc j'ai utilisé le format Date de java mais comme le minimum c'est le 1 janvier 1970 01h00m00s je voulais convertir ça en String pour que ça ressemble à une vraie durée 0 année 0 mois 0 jours 0 heure 0 minute 0 sec mais dans mon tJavaFlex j'ai l'erreur
    "The schema from the input link "row/8" is different from the schema defined in the component"
    Merci encore pour tes explications!

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

Discussions similaires

  1. Serveur Talend + contexte d'execution des jobs par défaut
    Par GeoffZKS dans le forum Exécution et industrialisation
    Réponses: 1
    Dernier message: 18/03/2013, 16h17
  2. Réponses: 1
    Dernier message: 10/12/2009, 21h55
  3. Generer l'executable d'un job en ligne de commande
    Par imikado dans le forum Exécution et industrialisation
    Réponses: 0
    Dernier message: 04/05/2009, 16h21
  4. Lancer un job par ligne de commande
    Par SILO dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/04/2008, 15h13
  5. [TSynMemo] Positionnement par ligne et colonne
    Par Mercilius dans le forum Composants VCL
    Réponses: 9
    Dernier message: 16/04/2003, 16h22

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