2014-02-28 49 views
0

我試圖在字段的平均值超過閾值一分鐘時引發一個事件。我所定義的對象:通過聚合函數進行篩選

class Heartbeat 
{ 
    public string Name; 
    public int Heartbeat; 
} 

我的條件是指

select avg(Heartbeat) , Name 
from Heartbeat.std:groupwin(Name).win:time(60 sec) 
having avg(Heartbeat) > 100 

但是,事件永遠不會盡管我火了一批擁有超過100心跳值的事件被解僱。對於我做錯了什麼的建議?

在此先感謝

+0

你錯過組')'的'平均(心跳),名稱 來自Heartbeat.std:groupwin(Name).win:time(60 sec) have avg(Heartbeat)> –

+0

對不起,我輸入錯誤 - 條件是 – user1132294

+0

> 100 – user1132294

回答

0

它混淆很多人,但因爲時間是所有羣體同樣可以簡化查詢和刪除groupwin。本節中的文檔說明解釋了原因:http://esper.codehaus.org/esper-4.11.0/doc/reference/en-US/html_single/index.html#view-std-groupwin 帶或不帶groupwin的語義是相同的。

我想你想要group-by(而不是groupwin),因爲group-by控制聚合級別,groupwin控制數據窗口級別。

新建查詢: 選擇AVG(心跳),從Heartbeat.win:time(60秒名稱)具有名稱AVG(心跳)> 100

+0

完美,謝謝你的幫助。 – user1132294