2014-10-09 71 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應該用於這樣的場景,函數用於單獨的行。