0

2 つのイベント タイプ (A と B) があります。同じ id: を持つAイベントの後に来るすべてのBイベントを検出するパターンを書きたいと思います。ただし、個別の ID にする必要があります。言い換えれば、パターンは、上記の式が true になるまで、最初のイベント以降の同じ ID を持つすべての Aイベントを無視する必要があります。つまり、同じ ID を持つBイベントが来ることを意味します。every A -> B (A.id = B.id)

たとえば、これがイベント ストリームであるとします。

1. A (id: 1); 2. A(id: 2); 3. A (id: 3); 4. A(id: 1); 5. A (id: 2); 6. B (id: 1); 7. B (id: 2); 8. A (id: 1); 9. B(id: 3); 10. A (id: 1); 11. B (id: 1)

イベント No1 と同じ ID を持つため、パターンはイベント No4 を無視する必要があります。イベント No6 が来ると、パターンが一致するはず1. A (id: 1) -> 6. B (id: 1)です。次に、パターンはid=1の新しいAイベントを許可する必要があります。したがって、イベント No8 は無視できませんが、イベント No10 は無視する必要があります。イベント No11 が来ると、再びパターンが一致するはず8. A(id: 1) -> 11. B(id: 1)です。

また、イベント No2 はイベント No7 と一致し、イベント No3 はイベント No9 と一致する必要があります。

を使用しようとしましたが、最初のイベント以降、同じ ID を持つすべての AEVERY-DISTINCT(A.id) A -> B (A.id=B.id)イベントが無視されます。それから試してみましたが、同じIDのBイベントが来るまで、IDに関係なくすべてのAイベントを無視するため、うまくいきませんでした。EVERY (A -> B (A.id = B.id))

4

1 に答える 1

1

every A -> B (A.id = B.id)ステートメント内にステートメントを持ち、キーワードの直後にPATTERN追加を追加できます。@SuppressOverlappingMatchesPATTERN

完全なステートメントは次のようになります。

SELECT b.id FROM PATTERN @SuppressOverlappingMatches [every a=A -> b=B (a.id = b.id)] 

参照: http://www.espertech.com/esper/release-5.5.0/esper-reference/html/event_patterns.html#patterns-howto-suppress

于 2016-12-15T10:17:17.790 に答える