2011-05-17 60 views
-1

我有一個具有(價格,交易時間)屬性的市場數據事件流。Esper - 子時間窗口的彙總

我想爲每個新的市場數據事件計算過去時間窗口的簡單平均值。簡單平均值=交易價格總和/事件數量

但是,棘手的部分是我想從當前事件時間計算多個子時間窗口。所以,說[t-0min,t-2min],[t-2min,t-4min],[t-4min,t-6min]的簡單平均值...

這些時間窗口將爲每個新事件重新計算。

現在我只是使用多個數據流並總結[t-0 min,t-2 min],[t-0 min,t-4 min],t-0 min,t- 6分鐘],...並通過減法找到各自的簡單平均值。必須有更好的方式來做到這一點,可能只使用一兩個流?

回答

0

對於任何試圖解決同樣的問題:

創建五個交錯的時間窗在那裏留下一個窗口事件進入下一個...

  create window W1.win:time(5 min) as select * from yourSource     
      create window W2.win:time(5 min) as select * from yourSource     
      create window W3.win:time(5 min) as select * from yourSource 
      create window W4.win:time(5 min) as select * from yourSource 
      create window W5.win:time(5 min) as select * from yourSource 

      insert into W1 select * from yourSource 
      insert rstream into W2 select rstream * from W1 
      insert rstream into W3 select rstream * from W2 
      insert rstream into W4 select rstream * from W3 
      insert rstream into W5 select rstream * from W4 

      select sum(price)/count(*) as sma, symbol from W1 
      GROUP BY symbol 
      select sum(price)/count(*) as sma, symbol from W2 
      GROUP BY symbol 
      select sum(price)/count(*) as sma, symbol from W3 
      GROUP BY symbol 
     select sum(price)/count(*) as sma, symbol from W4 
      GROUP BY symbol 
      select sum(price)/count(*) as sma, symbol from W5 
      GROUP BY symbol