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 的事件,但该事件永远不会被触发。关于我做错了什么有什么建议吗?

提前致谢

4

1 回答 1

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) , Name from Heartbeat.win:time(60 sec) group by Name 具有 avg(Heartbeat) > 100

于 2014-02-28T17:28:02.460 回答