1

我试图解决简单的任务: 1. 我想关联 3 个事件A、B、C的发生,以防它们在最后 10 秒内发生。

因此 Siddhi 仅支持 2 加入查询,我认为我无法解决它。在文档中,建议使用多个查询并将它们像这样连接在一起

from A#window.time(10 sec) as a
join B#window.time(10 sec) as b on a.id == b.id
select a.id
insert into tempA

from tempA#window.time(10 sec) as a
join C#window.time(10 sec) as c on c.id == a.id
select *
insert into finalResult

但这会产生错误的结果,因为流 tempA 中的数据可以存活更长时间,时间窗口未对齐。

也许我缺少了什么。有什么建议吗?谢谢

4

1 回答 1

0

为了解决这个问题,您可以尝试以下方法:

  1. 对于每个传入事件,添加一个时间戳。(您也可以在客户端本身中执行此操作,而不是在 cep 中执行此操作。)
  2. 将时间窗替换为外部时间窗
  3. 使用之前添加的时间戳字段作为外部时间窗口的时间参考

由于在这种情况下时间戳将是全局的,并且所有外部时间窗口都将根据它们运行,因此这应该可以正常工作。

于 2014-10-10T07:38:42.403 回答