2014-10-09 56 views
0

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

可以说我们在输入流中有value1和value2。

  • 主机:A,值1:1,值2:10
  • 主机:A,值1:2,值2:20
  • 主机:A,值1:3,值2:30
  • 主机: A,值1:4,值2:40
  • 主持人:A,值1:5,值2:50

现在我已经做了东道国的时间配料和分组。 并写了一个自定义函数,它可以找到MEDIAN,并且还可以使用内置函数SUM。

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

执行计划查询

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

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