Это делается с помощью контекстов в Esper. Контексты определяют жизненный цикл анализа.
Из рисунка неясно, каково состояние, которое запускает и заканчивает каждый из этих блоков, или перекрывают ли эти блоки друг друга (перекрывающийся контекст) или не перекрываются блоки (не перекрывающийся контекст). Вот с чего можно начать.
create context BlueOrRedBox start MyEvent(...some criteria...) end MyEvent(...whatever...);
context BlueOrRedBox select somekey, count(*) from MyEvent group by somekey output snapshot when terminated;
Замените "start MyEvent (... некоторые критерии ...)" на все, что запускает окно.
Замените "конец MyEvent (... что угодно ...)" на то, что заканчивается поле.
Возможно, если начальный или конечный критерии получены из некоторой агрегации, такой как счетчик, тогда используйте отдельный оператор для определения начального и / или конечного критериев и используйте «вставить в».
Ссылки на документы:
- Неперекрывающийся контекстный документ
- Страница шаблонов решений