WSO2 CEP自定义函数不作为聚合函数工作,而是对每一行数据进行操作。
假设输入流中有value1和value2。
现在我已经按主机完成了批处理和分组。并编写了一个自定义函数,找出了中值,并使用了内置函数和。
但是它所做的是,在分组后对所有5行应用SUM函数,但是自定义函数是逐行调用的。自定义函数类中的process方法被逐行调用。因此,SUM返回15,但我的中值函数将输出作为50,这是最后一个value2。
执行计划查询
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) {我们不能有一个自定义聚合函数,或者如果定制函数应该只在逐行基础上执行?
发布于 2014-10-09 12:37:34
您可以通过编写自定义OutputAttributeAggregator而不是自定义函数来解决这个问题。OutputAttributeAggregator应该用于这样的场景,函数用于单个行。
https://stackoverflow.com/questions/26274142
复制相似问题