Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > ETL > Talend
Talend Forum d'entraide sur Talend (Talend Open Studio, ...). Avant de poster --> FAQ Talend, Tutoriels Talend
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/08/2007, 09h06   #1
Nouveau Membre du Club
 
Inscription : juin 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 109
Points : 37
Points : 37
Par défaut [Talend]t_run_job et paramètres

Bonjour,

Peux-t-on passer un paramètre au t_runJob autre qu'un paramètre de context?


J'ai un tMap relié à un tRunJob, la liaison se fait par un "new ouput main" et dans le tMap je lui ai affecté la valeur d'un index.
Je voudrai que le tRunJob utilise cette valeur, est ce possible?

Dois je déclarer cette variable et la rajouter dans le context?


Merci
lolotte35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2007, 12h03   #2
Membre éclairé
 
Avatar de bouvda
 
Inscription : octobre 2005
Messages : 252
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2005
Messages : 252
Points : 312
Points : 312
Envoyer un message via MSN à bouvda
Bonjour,

ce n'est pas possible à cause du code suivant dans le fichier tRunJob_main.javajet du composant tRunJob :
Code :
1
2
3
4
5
6
7
8
9
 String noSpacesValue = value.replaceAll(" ", "");
    IF(noSpacesValue.contains("context.getProperty(\"") || noSpacesValue.startsWith("\"")) {
        contextStr.append("=\"+");
        contextStr.append(value);
    }else{
     contextStr.append("=\"+\"");
        contextStr.append(value);        
        contextStr.append("\"");
    }
Pour que cela soit possible il faut changer cette partie du code en :
Code :
1
2
3
4
5
6
7
8
9
 /*String noSpacesValue = value.replaceAll(" ", "");
    if(noSpacesValue.contains("context.getProperty(\"") || noSpacesValue.startsWith("\"")) {*/
        contextStr.append("=\"+");
        contextStr.append(value);
  /*  }else{
     contextStr.append("=\"+\"");
        contextStr.append(value);        
        contextStr.append("\"");
    } */
Par contre après avoir apporté cette modification, il faut bien faire attention si l'on veut passer des valeurs constantes et non des variables. En effet, il faudra mettre les guillemets.
Par exemple, si je veux passer la chaîne "Coucou" en paramètre, il faudra bien renseigner : "Coucou" (avec les guillemets). Si je veux passer en paramètre une valeur du lien entrant du tRunJob il faudra alors écrire : row1.champ1
bouvda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/08/2007, 14h51   #3
co2
Membre émérite
 
Avatar de co2
 
Inscription : mai 2002
Messages : 182
Détails du profil
Informations forums :
Inscription : mai 2002
Messages : 182
Points : 823
Points : 823
Envoyer un message via Skype™ à co2
Citation:
Envoyé par lolotte35 Voir le message
Bonjour,
Peux-t-on passer un paramètre au t_runJob autre qu'un paramètre de context?
Oui c'est désormais possible. Cf. http://talendforge.org/bugs/view.php?id=1100
co2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/08/2007, 11h48   #4
Nouveau Membre du Club
 
Inscription : juin 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 109
Points : 37
Points : 37
Bonjour,

J'ai donc modifié le fichier "tRunJob_main.javajet" et j'arrive à avoir la variable dans mon job fils.


Par contre dans le job père j'insère un contrat dans une table contrat avec un id_contrat

Puis dans le job fils, j'insère un évènement où j'indique l'id_contrat auquel il est lié.
l'id_contrat est la variable que je passe entre les 2 jobs.

Mais je dois avoir un problème de commit :
en effet arrivé au job fils il refuse d'insérer l'évènement car il dit que l'id_contrat n'existe pas dans la table contrat.

Hors quand le job est fini je vois que l'id_contrat existe bien dans la table contrat.
Il ne doit pas avoir commiter l'insertion de mon contrat lorsque je veux insérer mon évènement, je joins l'image du job père.
Images attachées
Type de fichier : jpg alimentation_t_co_contrat.jpg (75,6 Ko, 28 affichages)
lolotte35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/09/2007, 23h24   #5
Membre éclairé
 
Avatar de bouvda
 
Inscription : octobre 2005
Messages : 252
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : octobre 2005
Messages : 252
Points : 312
Points : 312
Envoyer un message via MSN à bouvda
Bonjour,
Citation:
Envoyé par lolotte35 Voir le message
Mais je dois avoir un problème de commit :
en effet arrivé au job fils il refuse d'insérer l'évènement car il dit que l'id_contrat n'existe pas dans la table contrat.

Hors quand le job est fini je vois que l'id_contrat existe bien dans la table contrat.
Il ne doit pas avoir commiter l'insertion de mon contrat lorsque je veux insérer mon évènement, je joins l'image du job père.
dans ce cas il faut stocker dans un tableau tous les id passés en paramètres au tRunJob puis déclencher le tRunJob une fois le Commit effectué.
Pour cela, il faut remplacer le tRunJob par un tArray puis ajouter un lien ThenRun partant du Commit et à destination d'un tArrayIn. Enfin à partir du tArrayIn il faudrait faire un lien vers le tRunJob.
Il faut un tArrayIn modifié qui se trouve ici : http://www.developpez.net/forums/sho...d.php?t=388314.
La façon de l'utiliser est également détaillée dans la discussion.
bouvda est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/09/2007, 09h41   #6
Nouveau Membre du Club
 
Inscription : juin 2006
Messages : 109
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 109
Points : 37
Points : 37
Merci,

ça fonctionne super bien maintenant!
ah je n'aurai jamais trouvée toute seule!

Bonne journée
lolotte35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h23.


 
 
 
 
Partenaires

Hébergement Web