Недавно я работал с Esper, и есть функция, которую я пропустил в документации, но она может существовать.
Я хотел бы сохранить некоторые события, пока никто не появится в течение 15 секунд, и когда это произойдет, отпустите их все.
Один запрос делает именно это, это:
select rstream * from MyEvent.win:time_accum(15 sec)
Я могу добавить условие в MyEvent, например
select rstream * from MyEvent where status = 'ALARM_END'.win:time_accum(15 sec)
И это прекрасно работает.
Теперь я хотел бы добавить условие для атрибута eventType, говорящее, что:
если новое событие запускается с типом события xxxx, но в окне уже есть событие с типом события xxxx, то не добавляйте это новое всплывающее событие в окно (и, следовательно, не останавливайте секундомер от 0 до 15 с).
Есть ли способ сделать это ?
Большое спасибо !
РЕДАКТИРОВАТЬ :
Более глубоко изучив мои потребности и документацию ESPER, я думаю, что мои потребности более удовлетворены
select * from MyEvent.win:time_length_batch(15 sec, 2)
Я не думаю, что мне нужен rstream, так как я просто хочу накопить 1 или 2 элемента и получить их сразу в массиве (для новых событий это нормально).
Однако можно ли добавить условие для первого (и только первого) MyEvent, поступающего в окно? Статус = 'ALARM_END'.