2017-01-25 37 views
1

私はtalendには新しく、私はかなり標準的だと感じているが、解決策を見つけることができないような状況がある。Talend - tFileExist両方のパスが同じフローに合うようにする

  1. tFileExistコンポーネントを使用して、ファイルがターゲットの場所にまだ存在していないかどうかを確認する必要があります。
  2. ファイルが存在しない場合は、メイン・フローに参加します。メイン・フローでは、ソース表からデータを取り出し、ターゲット・ロケーションにファイルとして配置します。
  3. 一方、ファイルがすでにターゲットの場所に存在する場合は、そのファイルを別の場所に移動してから、ソーステーブルからファイルを取得するために同じメインフロー(ポイント2と同じ)に参加する必要があります。ターゲットの場所にファイルとして配置します。

しかし、これらの2つの代替パスを同じフローに接続することはできないようです。私は解決策を探しましたが、すべての記事では、「存在する」および「存在しない」経路の代替フローを取ることについて話しています。

ご意見やご指摘があれば助かります。ありがとう。

私はジョブイメージへのリンクを追加しました。

Job Image

答えて

0

あなたがリンク

の "if" ここでの仕事の例を使用することができます:あなたのリンクは、あなたがコンポーネントという変数を入れて、 "もし" では

enter image description here

をtfileexistの使用を許可する:

  • (ブール)globalMap.get( "tFileExist_1_EXISTS"))

そして、他ではあなたはそれが反対のputリンク場合:

  • !あなたが相談することができます。また((ブール)globalMap.get( "tFileExist_1_EXISTS"))

あなたは(あなたがしたい場合たとえばtfileinput /出力)あなたが好きでtmysqlinput /出力を置き換えることができ

あなたの仕事に入れコンポーネントが構造]ボタンをクリックして許可する変数:応答テオため

enter image description here

+0

感謝。私は 'If'条件の使用法を理解していて、それらを入れました。あなたが提示したソリューションは、フローtMySQLInput-> tMap-> tMySQLOutputを複製します。これは私が避けようとしていることです。さらなる処理が複雑なものであれば、私はそれを2回繰り返すことは望まない。また、後で必要になるかもしれない変更は、両方の場所で行う必要があります。私はそれを複製するのではなく、同じ流れを再利用したいと思っています。 – Vikap

+0

アクションを2回繰り返さないでください。最初の "if"が選択されている場合、2回目は同じ実行で決して実行されません。別のブランチを昼食にするために仕事を再開する必要があります。それは1つまたは他のものです –

+0

私は、実行時に2つのフローのどちらかが実行され、両方が実行されないことを理解しています。しかし、私は仕事のデザインについて話しています。私は設計時に同じフローを複製するジョブを設計しないようにしようとしています。私は自分の仕事で同じ流れを2回維持したくありません。 – Vikap

関連する問題