如何创建具有多个条件计数的 siddhi 应用程序

How create a siddhi app with Multiple conditional count

我有一个特殊情况,我无法使用 window、模式或聚合函数等 siddhi 选项来实现它。数据来自 2 个流,我在 KAFKA 的两个流中设置源,我在 siddhi 源 p1、p2 中设置主题列表。我写了一个查询来检查 2 条规则 (type = "h") 和 (type = "g")。 siddhi 应用程序必须只允许符合这些条件的事件。我需要每10秒聚合一次,此时符合第一个条件的事件数为2,符合第二个条件的事件数为5。怎么样?

终于找到解决方案:

from stream1#window.time(10 seconds)
select type, id, sum(ifThenElse(type == 'h', 1, 0)) as cnt1,   sum(ifThenElse(type == 'g', 1, 0)) as cnt2
    having cnt1 == 2 and cnt2 == 5
insert all events into stream2;

我用许多值(0、1、2、...)多次测试了这段代码,所有这些都通过了。