DBのデータ取得結果に対する処理

Four Stars

DBのデータ取得結果に対する処理

お世話になります。

 

複数DBのデータを連結させたデータをCSVファイルに書き出す処理を行いたいと思っています。

処理内容は下記の通りになります。

 

tPostgresqlinputで以下のようなクエリでデータを取得

SELECT sum(数量)、名前、項目  from  テーブルA  WHERE  名前=”A”  GROUP BY  名前、項目

(WHERE区の"A"は実際はこれより前に取得したデータを反復させているものなので、可変になります)

上記クエリに対して、①該当するデータが無いもしくはデータがあるがsum(数量)が0の場合と②それ以外で、

ファイルに記載する内容を変えたいのですがどのようにすれば実現できるかご教授頂けないでしょうか。

 

tPostgresqlinputのあとにtjavaを接続し、自身で判定プログラムを記載すればできるかと思ったのですが、

tPostgresqlinputのNB_LINEを使用すればデータが無い場合は判断できるのですが、

数量が0か判定するために、取得したsum(数量)データをtjavaで使用したいが参照方法がわからない(そもそも参照できない?)状態です。

 

よろしくお願いいたします。

 

Four Stars

Re: DBのデータ取得結果に対する処理

tJavaRowを使用すれば入力コンポーネント(この場合tPostgresqlinput)の結果レコードを使用できるので、

その結果によってグローバル変数にグローバル変数制御用の値を設定することで①と②の場合分けができそうです。

MySQLの例ですが画像を添付しましたのでご確認ください。

※MySQLだと該当するデータがない場合NULLを取得するようですが、PostgreSQLでも同じ挙動になるかどうかは要確認。

 

ジョブ全体図.PNGtJavaRowの設定.PNGif分岐設定1.PNGif分岐設定2.PNG

Four Stars

Re: DBのデータ取得結果に対する処理

krsk様

ご返答ありがとうございます。

 

tJavaRowを使えばそのようなことができるのですね。

ご提示していただいた方法で実現できそうか試してみたいと思います。

不明な点があれば再度質問させていただきますのでよろしくお願いいたします。

What’s New for Talend Spring ’19

Watch the recorded webinar!

Watch Now

Definitive Guide to Data Quality

Create systems and workflow to manage clean data ingestion and data transformation.

Download

Tutorial

Introduction to Talend Open Studio for Data Integration.

Watch

Downloads and Trials

Test drive Talend's enterprise products.

Downloads