按聚合函数过滤

时间:2014-02-28 16:31:56

标签: esper nesper

我正在尝试在字段的平均值超过阈值一分钟时引发事件。我将对象定义为:

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

然而,事件永远不会被解雇,尽管我发出了Heartbeat值超过100的许多事件。对我做错了什么建议?

提前致谢

1 个答案:

答案 0 :(得分: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的名称:时间(60秒)按名称分组avg(心跳)> 100