Esper:在触发事件到来后的最短时间内找到最早的事件

时间:2013-06-25 12:46:01

标签: esper

我的事件流通常包含一个open事件,后跟一个close事件。我们称之为OC。但是,有两个细节:

  1. OO到达之前可能会跟着一个或多个C
  2. C可能完全丢失(见下文)
  3. 假设C应在某个T之后不迟于时间O内到达。否则,C被视为缺失。当C最终到达时,从O T C之前到达的所有未结O被视为孤儿并且不感兴趣。

    我希望esper触发每对C后跟O,其中T距离C O不再O。 O1 O2 O3 ... C之间的任何(O1,C)

    例如,

    datediff(O1, C) < T

    如果(O2,C)

    应选择datediff(O2, C) < T 如果上面的内容为false,则应选择{{1}} {{1}}

    在解决这个问题时发脾气了。看起来我的思想与esper不兼容。你的帮助非常有用。

1 个答案:

答案 0 :(得分:0)

这可能类似于下面的内容,我们的想法是,当事件到达时,我们想要查看事件的最后1分钟并找到与时间差异相匹配的第一个事件。如果需要,请使用第二个语句过滤掉那些没有匹配的语句。

插入Pair 选择,(选择窗口()。firstOf(v =&gt; v.time - e2.time&lt; T)从Event.win:time(1分钟)作为e1)匹配 来自Event as e2

从匹配不为空的配对中选择*