Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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を生成する)が必要となる要件って結構ありそうな気がするのですが、みなさんどのようにされているのでしょうか。
数行をメモリに格納しておく、という用途であれば、tMemorizeRows が使えないこともなかったと思います。
https://help.talend.com/reader/ckfdiwxsSml4AqpSeE3RmQ/t9ibTKhDDp5e_igFyJXLag
ただ、実務的には、tSetGlobalVar で変数を宣言してそれを編集するほうがスマートに書けることも多くあったりします。
ご参考になりましたら幸いです。