2017-10-12 6 views
0

J'ai un travail en cours d'exécution dans PDI qui transfère des données provenant de différentes sources vers différentes cibles d'un système spécifique. Ce travail a beaucoup d'emplois d'enfants. Appelons ce Job MasterJob1.Pentaho Data Integration "Variable scope type" dans Set Variables

Nous avons le même système en cours d'exécution à d'autres fins. Par conséquent, je veux copier ce travail dans PDI. Ici, je dois juste changer quelques paramètres. Appelons cela MasterJob2.

Pour rendre différentes variables disponibles pour l'ensemble du travail (également dans les travaux parents, les travaux enfants et ainsi de suite du travail principal), nous utilisons "Définir les variables". Ici, nous avons beaucoup de variables différentes. Disons qu'une variable s'appelle TestVar. À l'heure actuelle, le "Type d'étendue variable" de ces variables dans MasterJob1 est toujours défini sur "Valide dans la machine virtuelle Java".

Selon la documentation PDI http://wiki.pentaho.com/display/EAI/Set+Variables, cela signifie que les variables sont disponibles partout dans la machine virtuelle. Pour ma compréhension, cela signifie que si je copie le travail et laisse le "Variable Scope type" tel quel, le Variable TestVar peut être écrit par MasterJob1 mais peut aussi être écrasé par MasterJob2.

Je veux définitivement éviter que MasterJob1 puisse écraser les variables de MasterJob2 et vice versa. Cependant, les variables définies dans MasterJob1 doivent être disponibles partout dans MasterJob1 et les variables dans MasterJob2 doivent être disponibles partout dans MasterJob2. Par conséquent j'ai continué à lire la documentation. Il est dit qu'il existe le "Variable Scope Type" "Valide dans le job racine". Est-ce que ma supposition est bonne, que c'est le type de portée variable que je dois utiliser?

Malheureusement, je n'ai pas tellement d'expérience avec cela et j'espère que vous pouvez me dire si c'est la bonne façon ?! Créer un environnement de test prendra quelques jours pour moi. Par conséquent, j'espère que vous pouvez me donner un "oui" ou la bonne solution.

Répondre

1

Votre hypothèse est correcte.

Évitez d'utiliser Valid in the virtual machine pour les tâches sur le serveur, bien qu'il soit pratique pour le débogage sur votre PC de développement.

Utilisez Valid in the parent job lorsqu'une transformation (ou un travail) doit renvoyer une valeur à l'appelant.

Utilisez très rarement Valid in the grand-parent job, bien que je me souvienne de moments spéciaux où c'était utile.

Utilisez Valid in the root job presque tout le temps.

+0

Merci pour votre aide rapide et réponse. Déjà implémenté et il semble que ça fonctionne parfaitement :-) – DS87