我正在尝试构建一个执行计划,该计划将不同的事件聚合为一个事件并统计发生次数(CurrentEventId)。计划如下:
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":"..."}
}
]
你知道如何实现这一点吗?
使用siddhi分区,将为每个分区变量(在本例中为CurrentEventId
)生成单独的事件。由于您有两个CurrentEventId,所以outStream中会收到两个事件。如果有三个CurrentEventId,您将分别收到三个事件。
到目前为止,无法按照您的要求在siddhi中批处理事件。有一个相关的Jira,它与您期望的功能类似。