2017-02-04 19 views
0

從埃斯佩爾樣,我只寫簡單的英超這樣的:輸出爲艾斯波滑動窗口接縫時來接連的事件離開

select symbol, avg(price) as avgprice,count(*) as count,    
current_timestamp() as time from StockTick.win:time(0.4 sec) 
group by symbol 

而且每100毫秒,我喂的數據到艾斯波如下:

StockTick={symbol='YHOO', price=100} 
t=t.plus(0.1 seconds) 
StockTick={symbol='YHOO', price=65} 
t=t.plus(0.1 seconds) 
StockTick={symbol='YHOO', price=75} 
t=t.plus(0.1 seconds) 
StockTick={symbol='YHOO', price=65} 
t=t.plus(0.1 seconds) 
StockTick={symbol='YHOO', price=100} 
t=t.plus(0.1 seconds) 
StockTick={symbol='YHOO', price=15} 

但我收到的輸出讓我迷惑

Statement: AVGTABLE 
Insert 
AVGTABLE-output={symbol='YHOO', avgprice=76.25, count=4, time=300} 
At: 1970-01-01 00:00:00.400 
Statement: AVGTABLE 
Insert 
AVGTABLE-output={symbol='YHOO',avgprice=68.33333333333333, count=3,  
time=400} 
At: 1970-01-01 00:00:00.400 
Statement: AVGTABLE 
Insert 
AVGTABLE-output={symbol='YHOO', avgprice=76.25, count=4, time=400} 
At: 1970-01-01 00:00:00.500 
Statement: AVGTABLE 
Insert 
AVGTABLE-output={symbol='YHOO', avgprice=80.0, count=3, time=500} 
At: 1970-01-01 00:00:00.500 
Statement: AVGTABLE 
Insert 
AVGTABLE-output={symbol='YHOO', avgprice=63.75, count=4, time=500} 
At: 1970-01-01 00:00:00.600 
Statement: AVGTABLE 
Insert 
AVGTABLE-output={symbol='YHOO', avgprice=60.0, count=3, time=600} 

在時間400和500,有2個輸出在這裏,我想這是由於1個事件在另一個窗口之前出現。爲什麼他們出現在這裏,因爲我沒有選擇irstream,我該如何避免它在UpdateEventListener

回答

0

當事件從時間窗口到期時,平均變化因此聽衆看到新的平均值,因爲舊的平均值不再正確。通過不使用時間窗口,例如... from StockTick group by ...

+0

我使用時間窗口來計算最近1天價格的平均值。所以在這種情況下,你能給我一個提示嗎? – kh4nhvu