金融ドメインでは、通常、時系列データのストリームから移動ウィンドウ集計値を計算する必要があります。例として移動平均を使用します。たとえば、次のデータ ストリームがあるとします (T はタイム スタンプ、V は実際の値)。
[T0,V0],[T1,V1],[T2,V2],[T3,V3],[T4,V4],[T5,V5],[T6,V6],[T7,V7],[T8,V8],[T9,V9],[T10,1V0],......
取得したストリームから移動平均 3 を計算するには:
avg([T0,V0],[T1,V1],[T2,V2]),
avg([T1,V1],[T2,V2],[T3,V3]),
avg([T2,V2],[T3,V3],[T4,V4]),
avg([T3,V3],[T4,V4],[T5,V5]),
avg([T4,V4],[T5,V5],[T6,V6]),...
移動平均を計算するには、次のようにして実行できるようです。
- 元のストリームから Observable を構築する
- 値をグループに集約して、元のストリームから Observable を構築します
- 集約演算子を使用して、ステップ 2 で Observable からの最終結果を計算します。
ステップ 1 と 3 は簡単に実装できますが、ステップ 2 については、現在の RxJava には移動ウィンドウ グループを生成するためのビルトイン オペレータがないようです。既存のオペレーターからソリューションを構成する簡単な方法ですが、RxJavaでこれを「エレガントに」行う方法を提案できる人はいますか?