繁体   English   中英

WSO2 CEP自定义功能不能用作聚合功能

[英]WSO2 CEP custom function doesn't work as aggregate function

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。

但是它的作用是,在分组后将SUM函数应用于所有5行,但是自定义函数逐行调用。 自定义函数类中的处理方法被逐行调用。 因此,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) {

我们不能有一个自定义的聚合函数,或者自定义函数只能按行执行吗?

您可以通过编写自定义OutputAttributeAggregator而不是自定义函数来解决此问题。 应该将OutputAttributeAggregator用于此类情况,并且函数用于单个行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM