WSO2 CEP自定义函数不能作为聚合函数使用

WSO2 CEP自定义函数不能作为聚合函数使用,wso2,complex-event-processing,siddhi,wso2cep,Wso2,Complex Event Processing,Siddhi,Wso2cep,WSO2 CEP自定义函数不是聚合函数,而是对每行数据进行操作 假设输入流中有value1和value2 主持人:A、Value1:1、value2:10 主持人:A、Value1:2、value2:20 主持人:A、Value1:3、value2:30 主持人:A、Value1:4、value2:40 主持人:A,数值1:5,数值2:50 现在我已经完成了主机的时间批处理和分组。 并编写了一个自定义函数来查找中值,还使用了内置函数SUM 但它所做的是,它在分组后对所有5行应用SUM函数,但自定

WSO2 CEP自定义函数不是聚合函数,而是对每行数据进行操作

假设输入流中有value1和value2

主持人:A、Value1:1、value2:10 主持人:A、Value1:2、value2:20 主持人:A、Value1:3、value2:30 主持人:A、Value1:4、value2:40 主持人:A,数值1:5,数值2:50 现在我已经完成了主机的时间批处理和分组。 并编写了一个自定义函数来查找中值,还使用了内置函数SUM

但它所做的是,它在分组后对所有5行应用SUM函数,但自定义函数是逐行调用的。 自定义函数类中的进程方法正在被逐行调用。 因此,SUM返回15,但我的中值函数给出的输出为50,这只是最后一个值2

执行计划查询

自定义函数Java类代码段


我们不能有一个自定义聚合函数吗,或者如果自定义函数只应该逐行执行吗?

您可以通过编写一个而不是自定义函数来解决这个问题。OutputAttributeAggregator应该用于此类场景,函数用于单独的行

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;
/**
     * Method called when sending events to process
     *
     * @param obj
     * @return
     */
    @Override
    protected Object process(Object obj) {