2016-12-15 11 views
1

У меня есть два типа событий (A и B). Я хотел бы написать образец, который определяет каждое событие B, которое происходит после события A с тем же идентификатором: every A -> B (A.id = B.id). Однако это должны быть разные идентификаторы. Другими словами, шаблон должен игнорировать все события с одним и тем же идентификатором после первого, пока это выражение не будет истинным, означает B событие с тем же идентификатором.Как сохранить отличимость до тех пор, пока на EPL EPLER не будет выполнено определенное условие.

Например, предположим, что это поток событий:

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)

Шаблон должен игнорировать событие No4, как это имеет тот же идентификатор события с No1. Когда наступит событие No6, шаблон должен соответствовать 1. A (id: 1) -> 6. B (id: 1). Затем шаблон должен разрешить новое событие A с id = 1. Поэтому событие №8 нельзя игнорировать, но событие №10 следует игнорировать. Когда наступит событие №11, образец должен снова совпасть с номером 8. A(id: 1) -> 11. B(id: 1).

Кроме того, событие No2 должно соответствовать событию No7, а событие No3 должно соответствовать событию No9.

Я попытался использовать EVERY-DISTINCT(A.id) A -> B (A.id=B.id), но он игнорирует все события A с таким же идентификатором после первого. Затем я попробовал EVERY (A -> B (A.id = B.id)), но это не сработало, так как он игнорирует все события, независимо от ID до B Событие с тем же идентификатором приходит.

ответ

1

Вы можете получить заявление every A -> B (A.id = B.id) в заявлении PATTERN и добавить дополнительно @SuppressOverlappingMatches сразу после ключевого слова PATTERN.

Полное заявление будет что-то вроде этого:

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

 Смежные вопросы

  • Нет связанных вопросов^_^