2016-05-13 16 views
2

異なるイベントを1つに集計し、発生(CurrentEventId)をカウントする実行計画を作成しようとしています。計画には、次のようになります。WSO2 CEP Siddhiイベントを単一のjsonオブジェクトに集約する

define stream inStream (correlation_EventName string, LastEventId int, CurrentEventId int); 

partition with (CurrentEventId of inStream) 
begin 

    from inStream#window.timeBatch(10 sec) 
    select correlation_EventName as meta_Label, CurrentEventId as meta_Id, LastEventId as correlation_From, CurrentEventId as correlation_To, count(CurrentEventId) as correlation_Value 
    insert into outStream 

end; 

実は、私は次の出力があります。

Event: {"event":{"metaData":{"Label":"StartCalculationEvent","Id":2},"correlationData":{"From":2,"To":2,"Value":66}}} 
Event: {"event":{"metaData":{"Label":"LoginEvent","Id":1},"correlationData":{"From":1,"To":1,"Value":693}}} 

を私はちょうど単一イベントを10秒ごとではなく、複数のイベントを必要としています。このイベントのフォーマットは次のとおりです。

[ 
    { 
     "event":{"metaData":"..."} 
    }, 
    { 
     "event":{"metaData":"..."} 
    } 
] 

これを実現する方法について考えていますか?

答えて

0

siddhiパーティションでは、パーティション変数(この場合はCurrentEventId)ごとに別々のイベントが生成されます。 2つのCurrentEventIdsがあるので、outStreamに2つのイベントを受け取ります。 3つのCurrentEventIdsがある場合は、3つのイベントを別々に受け取ることになります。

今のところ、あなたがリクエストしたように、シッディのイベントをバッチ処理する方法はありません。関連するJiraが、あなたが期待している機能に似ています。

関連する問題