時系列データ処理

Four Stars

時系列データ処理

簡単なことかもしれませんが、ご存じであればご教授の程、お願い致します。

 

DBに保存されている時系列データを、

数分単位(コンテキストで設定)での移動平均を算出したいと思っています。

 

処理開始から終了までの時間をtLoopのループタイプをWhileで使用し、

コンテキストで設定した分間隔でループ処理により行うと可能かもしれませんが

この場合、tLoopの基本設定に時間をどのように記述すれば上記が可能になりますでしょうか?

 

また他に良い方法があればご教授頂きたと思います。

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

Five Stars

Re: 時系列データ処理

gzikさん

 

あくまでもご参考ですでにご存知かもしれませんが、私の場合SQLからスタートした方なので、

DB側で処理できるところはSQLを書いてからETLへ流すようにしています。

 

SQLでも移動平均取れるかと思いますので、その後ETLで処理されるのはどうでしょうか。

https://dev.classmethod.jp/etc/sql-moving-average/

SQL内にContext設定を変数として持つことは可能です。

Five Stars

Re: 時系列データ処理

Contextの書き方としては、例えば下記のような書き方になります。

 

SQL:

" select ...,

avg(sum(amount)) over (
   order by
    date_trunc('day',payment_date) asc
   rows between " + context.name + " preceding and current row) as moving_average

from ..."