WSO2 CEP カスタム関数は集計関数として機能せず、代わりにデータの各行で動作します。
入力ストリームに value1 と value2 があるとします。
- ホスト:A、Value1:1、Value2:10
- ホスト:A、値1:2、値2:20
- ホスト:A、Value1:3、Value2:30
- ホスト:A、値1:4、値2:40
- ホスト:A、Value1:5、Value2:50
これで、時間のバッチ処理とホストごとのグループ化が完了しました。そして、MEDIANを見つけるカスタム関数を作成し、組み込み関数SUMも使用しました。
ただし、グループ化後に5行すべてにSUM関数を適用しますが、カスタム関数は行ごとに呼び出されます。カスタム関数クラスのプロセス メソッドが行ごとに呼び出されていました。したがって、SUM は 15 を返しますが、私の MEDIAN 関数は最後の値 2 である 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) {
カスタム集計関数を使用できませんか、またはカスタム関数が行ごとにのみ実行されることになっている場合は???