3

私は Pentaho Data Integration (別名 Kettle) を使用しており、いくつかの変換があります。それらを A、B、C、D、E と呼びましょう。B は A に依存し、D は C に依存し、E は B と D に依存します。 A、BとC、Dを並行して実行したい:

           -> A -> B _
    Start<            \
           -> C -> D----> E

ここで、A と C は並列に実行されます。BとD が成功した場合にのみ E を実行する方法はありますか? 現在、ジョブ メトリクスを見ると、BまたはD のいずれかが終了するとすぐに E が実行されます。

4

4 に答える 4

1

http://forums.pentaho.org/showthread.php?t=75425を見つけたところ、私が望むものを達成するのは簡単ではないようです。

于 2010-04-27T14:38:18.600 に答える
1

次のようなことができます。

        /--=--[job]----[set var J1=1]---\ 
[start]----=--[Job]----[set var J2=1]----+--[jscriptstep]--(ok)-->[next steps]
        \--=--[Job]----[set var J3=1]---/        \
                                                 (x)
                                                   \
                                                  [Write to log]

次の JS ステップ:

J1= parent_job.getVariable("J1");
J2= parent_job.getVariable("J2");
J3= parent_job.getVariable("J3");
(J1*J2*J3)==1;

ログへの書き込みステップはオプションであり、ログメッセージを使用して、赤い線で囲まれたエラーをログに登録していませんでした。

" 待機中:${J1}-${J2}-${J3}-${J4}-${J5}"

そのため、ログを通じて各ステップがいつ、何を終了するかを確認できます。

于 2019-02-06T11:52:11.657 に答える
0

私はこれができると信じていますが、これを十分にテストするのに十分な大きさの仕事がありません。基本的に、A、B、C、D、および E ジョブに加えて、4 つの別個のジョブが必要になります。それらを制御ジョブ、ジョブ A_B、ジョブ C_D、および並列ジョブと呼びましょう。

次のように設定します。

Control Job: start -> Parallel Jobs -> E
Parallel Jobs:       -> Job A_B
               start<           (Set Start step to run next jobs in parallel)
                     -> Job C_D
Job A_B: start -> A -> B
Job C_D: start -> C -> D

重要なのは、依存関係を保持するために、A -> B および C -> D が独自のジョブ ステップにある必要があることです。次に、並列ジョブは、制御が E に進む前に、両方の並列パスが完了したことを確認します。

于 2013-05-22T22:22:28.743 に答える