簡體   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