我想编写一个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'"
它没有任何错误,但我的功能永远不会被触发。
任何人都可以帮我找到满足这一要求的方法。
谢谢。
答案 0 :(得分:1)
在SQL中,having子句用于过滤聚合,而EPL符合sql标准。尝试“......有somefunc(window(*))”