Esper用户定义的函数,它有两个参数

时间:2016-06-15 06:34:22

标签: complex-event-processing esper epl

我想编写一个esper epl表达式,它根据我的用户定义函数返回的返回值过滤事件,我的用户定义必须一次获取两个事件对象。所以我写了这样的查询。

select window(*), 'CANDLE NAME' as candleType
from CandleStickEvent(myFunction(*) = 'true').win:length(2)

虽然这样做但它一次只传递一个CandleStickEvent对象,但我想传递窗口中的两个对象。

为实现这一目标,我也尝试了以下查询。但没有任何效果。

"select window(*), 'CANDLE NAME' as candleType "
"from CandleStickEvent(myFunction(window(*)) = 'true').win:length(2) "

这会显示此错误消息

  

'窗口'聚合函数要求聚合事件提供删除流;请在流媒体上定义一个数据窗口,或者使用' firstever' lastever'或者' nth'代替

我也尝试跟随查询,

"select window(*), 'CANDLE NAME' as candleType "
"from CandleStickEvent.win:length(2) "
"output when myFunction(*) = 'true'"

它没有任何错误,但我的功能永远不会被触发。

任何人都可以帮我找到满足这一要求的方法。

谢谢。

1 个答案:

答案 0 :(得分:1)

在SQL中,having子句用于过滤聚合,而EPL符合sql标准。尝试“......有somefunc(window(*))”