2016-09-29 74 views
0

我有一个在查询中调用的方法。然而,它只运行一次,但假设我发送了10个事件,监听器输出两个空事件。调用的方法只能运行一次

select method() from Event.win:length_batch(5) 

来自监听器的结果:这是正确的,因为方法dosent返回任何内容,但该方法只在触发两次时触发一次。

{method()=null} 
{method()=null} 

有谁知道为什么吗?我想在每次窗口填满5个事件时运行方法,因为您在窗口上方看到的内容被填充了两次,但是我的方法只触发了一次。

基本上我想要的方法运行多次像avg()等,但它只能运行一次。

回答

0

阅读文档中的这一个:16.4.24.3。用户自定义函数或静态方法缓存

默认情况下,如果设置为该函数的参数为​​空或者所有参数都为常量,Esper会缓存用户定义函数的结果。

+0

我将udf cahce设置为false,但现在它首先触发第一批的方法,但是它为每个事件打印每批次5次。然后,当第二批到达时,它将最后一批与新批次合并在一起,共打印10条事件行5次(一批中的事件数) – wandapong

+0

我认为您正在寻找使用聚合方法,或者也可以使用UpdateListener。 – goodie

+0

谢谢!它通过updatelistener工作。 – wandapong