添付の写真のように。テーブル入力からのカウント値が <> 0 の場合にのみ、SQL 実行ステップに渡す必要があります。それ以外の場合は、ダミーに移動し、プロセスを実行しません。 SQLステップでクエリを記述し、同様にダミーを初期化します.(フィルタ条件は整数であるため、テーブル入力カウント値)
1 に答える
問題が発生した場合に注意すべきいくつかの要因があります。
PDI のすべてのプロセスは、並行して初期化されます。したがって、変換にステップ(テーブル入力、テーブル出力など)がある場合。ktr を実行すると、これらのすべてのステップがまとめて初期化されます。
Pentaho Kettle の「SQL スクリプトの実行」ステップは自己トリガーです。変換の初期化フェーズで実行されます。このウィキをチェックしてください。
解決:
以下の画像を確認してください。
1. SQL ステップで「行ごとに実行」を有効にします。
アイデアは、ktr の初期化フェーズ ( SQL スクリプトの実行) 中にクエリの実行を停止することです。そのため、「行ごとに実行」オプションをオンにすることで、初期化自体の間ではなく、行が受信されると SQL ステップが実行されるようになります。
以下の画像を確認してください。
2.「ABORT」ステップの使用 (単なる提案)
「ダミーステップ」の使用に問題はありませんが、「フィルターステップ」が偽の状態を返すと、実行中の現在の変換が確実に中止されるようにする「中止」ステップを使用しているように感じます。
3.上記の 2 つのソリューションが気に入らない場合は、「簡易評価」ステップを使用してジョブ レベルでソリューションを作成する以外に方法はありません。これで問題が解決します。
ここにサンプルコードを添付しました。
それが役に立てば幸い :)