Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
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

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