WSO2 CEP自定义函数不作为聚合函数工作,而是对每一行数据进行操作。
假设我们在输入流中有value1和value2。
现在我已经完成了主机批处理和分组的时间。 并编写了一个查找MEDIAN的自定义函数,并使用了内置函数SUM。
但它的作用是,它在分组后在所有5行上应用SUM函数,但是逐行调用自定义函数。 自定义函数类中的进程方法逐行调用。 因此,SUM返回15,但我的MEDIAN函数将输出设为50,这只是最后一个值。
执行计划查询
from inputStream#window.timeBatch(10 sec)
select value1 as value1, value2 as value2, sum(value1) as sumOfValue1, custom:median(value2) as medianOfValue2 group by host
insert into outputStream;
自定义函数Java类代码段
/**
* Method called when sending events to process
*
* @param obj
* @return
*/
@Override
protected Object process(Object obj) {
我们是否有自定义聚合函数,或者自定义函数是否应该逐行执行???
答案 0 :(得分:0)
您可以通过编写custom OutputAttributeAggregator而不是自定义函数来解决此问题。 OutputAttributeAggregator应该用于这样的场景,函数用于各个行。