Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
お世話になっております。
TalendであるDBを参照して、データが1件以上あったらシェルをキックするというジョブを作成しております。
(tDBInput→(main)→tJavaRow→(if)→tSSH)
DBからselectした結果をシェルをキックする際にパラメータとしてセットすることは可能でしょうか?
例えば、InputのDBのカラムは、No,コード,グループ,名称だとします。
シェルをキックする際に、No,コード,グループの値をパラメータとしてセットすることができますでしょうか?
それぞれのカラムは可変のため、tSSHのコマンドを記載する際に、べた書きはできないものとします。
対応方法がございましたら、どなたかお教えいただきたいです。
よろしくお願いいたします。
@SU_ANNさん
例えば、tWaiteForSqlDataというコンポーネントを使うと、指定されたインターバル時間(秒単位)でDBテーブルへ該当データがあるかないかを見に行くことが出来ます。条件に合致した(SQLを発行します)データが見つかれば、次のコンポーネントに制御を移すことが可能です。また、このループは処理を継続するか、いちど実行できればループから抜けるかなども設定できます。
しかし、データの発生を認識する条件が都度異なるとなると、ちょっと要件に当てはめるのは難しいかもしれないですね。where句で指定するカラムが可変するという意図で理解しましたが正しいでしょうか?
ご返信ありがとうございます。
既に作成しているジョブで、where句をして
環境が準備できず、アイデアだけなのですが。
tSSH コンポーネントは初期化時にパラメータを組み立ててしまうので、ロウ
から直接パラメータを拾うことは難しい、ということはご理解の通りです。
> (tDBInput→(main)→tJavaRow→(if)→tSSH)
ふた通りの方法で実現できる可能性があります。
1. は、確実に実装できると思います。
2. は、たぶん下記のような構成でできそうです。
> (tDBInput→(Main)→tJavaRow→(Main)→tFilterRow→(フィルター)→tFlowToIterate→(Iterate)→tSSH)
・if の代わりに tFilterRow を置いてみました。
・tFlowToIterate に入力された行はグローバルマップに格納されます。
・tSSH のコマンド欄でグローバルマップから取得します。
もう解決されたとは思いますが、ご参考までにどうぞ。