我的事件流通常包含一個打開的事件,然後是一個關閉事件。我們稱它們爲O
和C
,相當。但是,有兩個細節:Esper:在觸發事件到達後在時間內找到最早的事件
O
可以跟隨一個或多個O
C
之前到達C
可能會完全丟失(見下文)
假設C
應該到達不遲於T
之後的部分O
。否則,C
被認爲是失蹤。當最後到達C
時,所有打開的O
都早於T
從此C
被視爲孤兒並且不感興趣。
我想艾斯波火每對O
接着C
,其中最早的O
不更遠然後從C
T
被選擇。中間的任何O
以及在選定的O
之前被跳過。
例如,
O1 O2 O3 ... C
應該選擇(O1,C)
如果datediff(O1, C) < T
應該選擇(O2,C)
如果以上是假的,datediff(O2, C) < T
等
一個在接近失去了我的脾氣這個問題。看起來我的思想與esper不兼容。你的幫助非常令人滿意。
首先,感謝大家的響應, 銘記你的想法,我想下面的查詢: '選擇(選擇第一個(* )來自O.win:time(1小時)),c。* from C c;' 它從'C'的小時內輸出最早的'O'。不幸的是,當隨後的「O」對和「C」在同一小時內到達時,它繼續報告最早的「O」。也就是說,對於所有事件在1小時內到達的以下系列: 'O1 O2 C1 O3 C2' ,它返回對'(O1,C1)'和'(O1,C2)'。而我想要的是'(O1,C1),(O3,C2)'。當'C'到達時,必須有一些方法來重置到達'O'的時間窗口...... –