首页 > 解决方案 > 过滤 Siddhi 中的先前事件

问题描述

是否有可能检测到之前的事件是否发生在当前的 Siddhi 事件之前?我正在尝试做类似“如果 Y 发生在 X 之后发送警报”之类的事情。我得到了与此相反的工作(如果 Y 发生而 X 从未发生,则发送警报),查询类似于:

from s1=inStream[value == 'Y'] and  
    not inStream[value == 'X'] 
    select s1.person  
    insert into outStream  

并希望我能够通过简单地删除“不”来使我的预期查询工作,但是那不起作用。

标签: complex-event-processingsiddhi

解决方案


使用以下查询

from s1=inStream[value == 'X'] -> s2= inStream[value == 'Y'] 
select s1.person, s2.person   
insert into outStream;  

如果要限制 X 和 Y 之间的时间(始终推荐),请使用

from s1=inStream[value == 'X'] -> s2= inStream[value == 'Y'] within 10 min
select s1.person, s2.person   
insert into outStream;  

推荐阅读