2014-02-28 84 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