我需要一些关于CEP引擎Esper的帮助: 我写了以下声明:
SELECT clientID FROM MovementEvent.win:time_batch(5 sec) GROUP BY clientID
然后我将MovementEvent发送到引擎中。 5秒后,订户被触发 - 好的。但又过了5秒钟,它再次被触发 - 为什么?
无论我向引擎发送了多少事件,订阅者总是被触发两次 - 在5秒和10秒之后
我希望你能帮助我!
Thanx;)
答案 0 :(得分:0)
你需要的是:
SELECT clientID FROM MovementEvent.std:groupwin(clientID).win:time_batch(5 sec);
一般情况下,使用GROUP BY而不应用于您选择的属性的聚合函数几乎总会让您措手不及:)。为此,这个陈述也会产生你的期望:
SELECT distinct(clientID) FROM MovementEvent.win:time_batch(5 sec);
此链接可能会更好地解释差异:http://www.espertech.com/esper/release-5.2.0/esper-reference/html/epl_clauses.html#epl-group-by-versus-view
答案 1 :(得分:0)
group-by使其成为聚合,Esper在密钥聚合发生更改时提供输出,即使您未选择聚合也是如此。 你可以做到这一点
select window(*).distinctOf(v=>client) from MovementEvent.win:time_batch(5 sec)