0

我想编写一个 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) "

这给出了这个错误信息,

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

我也尝试以下查询,

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

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

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

谢谢你。

4

1 回答 1

1

在 SQL 中,have 子句用于过滤聚合,EPL 符合 sql 标准。尝试“......有一些功能(窗口(*))”

于 2016-06-15T11:58:02.853 回答