wso2 cep - SiddhiQL - 对同一事件表中的不同行求和

时间:2017-02-09 09:39:41

标签: wso2 wso2cep siddhi

我有一个名为eventCount的事件表,它具有以下值:

ID  |   eventCount
1            3
2            1
3            5
4            1

我有一个数据流进来,我在一段时间内计算某种类型的值(1秒),并根据我将计数的类型和时间段()并写入count()的值在通讯行中。

我需要在事件表中对值进行求和。

我尝试创建另一个事件表并加入两者。虽然我收到的错误是你不能从2个静态来源加入。

在WSO2 CEP中从SIddiQL执行此操作的正确方法是什么

1 个答案:

答案 0 :(得分:0)

在您的方案中,事件表中的值的总和等于事件的总数,不是吗?那么为什么你需要把它保存为一个事件表,你不能只是那时(如下)?

@Import('dataIn:1.0.0')
define stream dataIn (id int);

@Export('totalCountStream:1.0.0')
define stream totalCountStream (eventCount long);

@Export('perIdCountStream:1.0.0')
define stream perIdCountStream (id int, eventCount long);

partition with (id of dataIn)
begin
    from dataIn#window.time(5 sec)
    select id, count() as eventCount
    insert into perIdCountStream;
end;

from dataIn#window.time(5 sec)
select count() as eventCount
insert into totalCountStream;

ps:如果你真的需要事件表,你总是可以在两个单独的表中保存totalCountStream和perIdCountStream。