Skip to main content
Announcements
See what Drew Clarke has to say about the Qlik Talend Cloud launch! READ THE BLOG
cancel
Showing results for 
Search instead for 
Did you mean: 
take7582
Contributor
Contributor

レコード間の比較方法について

PostgresSQL上のテーブルをtPostgresInputにて読み込んでいます。

テーブルは時系列データとなっており、前レコードと比較判定した値(移動平均など)を取得しようとしています。

 

過去ログ https://community.talend.com/t5/掲示板/時系列データ処理/m-p/48053#M40

にてtPostgresInputのSQL自体にWindows関数を使用してしまうという方法が案内されていますが、TOSのコンポートを使用した方法はないものかと検討しています。

 

1.tPostgresInputでテーブルデータを取得(服問い合わせやWINDOWS関数はなしの単純なSELECT文)。

2.tSortRowにMainで接続し、時系列項目でソート。

ここからの処理ですが、次のような流れを実現したいです。

・取得データを全件ループ

・カレントレコードと前レコード(1行前のレコード)を比較し、値を比較。

・比較結果によってOUT項目の値を編集する、またはOUT項目にレコードを出力しない。

 

この部分の処理について、tJavaRowやtJavaFlexを使用してみましたが、なかなかうまくいきません。

・tJavaRow

他のレコードを参照できない?

・tJavaFlex

開始コードでJavaのHashMap等を生成して、メインコードでカレントレコードを保存しておいて使用する。

レコードの型情報がわからない。

判定結果によってOUTPUTへの出力しないようにできない?

 

このような処理(レコード間の比較結果でOUTPUTを生成する)が必要となる要件って結構ありそうな気がするのですが、みなさんどのようにされているのでしょうか。

2 Replies
msminek
Creator
Creator

数行をメモリに格納しておく、という用途であれば、tMemorizeRows が使えないこともなかったと思います。

https://help.talend.com/reader/ckfdiwxsSml4AqpSeE3RmQ/t9ibTKhDDp5e_igFyJXLag


ただ、実務的には、tSetGlobalVar で変数を宣言してそれを編集するほうがスマートに書けることも多くあったりします。

ご参考になりましたら幸いです。

take7582
Contributor
Contributor
Author

アドバイスありがとうございます!!
試してみます。