なにかのきろく

ひっそりと戻ってきて自分のためになるべく頑張る・・・

Talendでデータ結合を考える 中編

今回もTalend上でのデータ結合を考えます。はい。


前回の最後に、
変数を利用して、エラー時のメッセージを表示させようとして
出来なかったギャフンってのがありました。


今回は、変数を利用しなくてもエラー時のメッセージを表示させるやり方です。
JOBの形はこんな感じです。

f:id:seyoshinori:20160627185753p:plain

もうすでに予想が付いていると思いますがww
各tMapでInnerJoin出来なかったレコードをRejectするだけです。
これで、結合の不具合に関して拾ってくることが出来る。

・tMap_1の内容

f:id:seyoshinori:20160627185809p:plain

・tMap_2の内容

f:id:seyoshinori:20160627185822p:plain

・tMap_3の内容

f:id:seyoshinori:20160627185847p:plain

こんな感じです。
Reject側のストリームの最終データにError_Msg列を追加する。
この列に各tMapで検出するエラー内容を固定入力する。


ただし、このやり方は通常やりません。
何故かと言えば理由は簡単です。
tMap_1で出力されるデータを見ればすぐわかります。

f:id:seyoshinori:20160627185912p:plain

これでは、1レコードに複数のデータ不備があった場合、
そのデータ不備の数だけ流さないと、
正常終了するデータにすることが出来ません!


以上の理由からこちらのやり方は推奨されないです。
さて、
この問題を解決するためにはRejectに流れるレコードを
別のやり方で判定してあげる必要がある。
後編では変数を確認してその具体的な実装をしたいです。


最後に、tMap_3のRejctファイルの内容です。

f:id:seyoshinori:20160627185935p:plain

あと、JOB実行結果です。

f:id:seyoshinori:20160627185944p:plain

 

 

End