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

时间:2014-10-09 08:49:42

标签: wso2 complex-event-processing siddhi wso2cep

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

假设我们在输入流中有value1和value2。

  • host:A,Value1:1,value2:10
  • host:A,Value1:2,value2:20
  • host:A,Value1:3,value2:30
  • host:A,Value1:4,value2:40
  • host:A,Value1:5,value2:50

现在我已经完成了主机批处理和分组的时间。 并编写了一个查找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) {

我们是否有自定义聚合函数,或者自定义函数是否应该逐行执行???

1 个答案:

答案 0 :(得分:0)

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