Я хотел бы использовать Esper для генерации эпизодов событий. Я пытаюсь обнаружить изменения в движении робота в течение каждого периода времени, и мне было интересно, какой будет лучший способ реализации.
Правила генерации эпизодов из событий будут
- Если время нового события (например, 7 секунд, робот A) робота более чем на 3 секунды, чем время последнего события (например, 3 секунды, робот A) того же робота, новое событие принадлежит к новому эпизоду.
- Каждый эпизод должен представлять только одного робота (например, 2 сек., робот А и 3 сек., робот Б должен вывести 2 эпизода).
Входные данные:
Event Time Robot Position
1 1 A 0
2 2 A 1
3 6 A 2
Выходные данные должны быть:
Array[0]={Event 1,Event 2}
Array[1]={Event 3} //more than 3 sec
Входные данные:
Event Time Robot Position
1 1 A 0
2 2 A 1
3 4 B 0
4 6 A 2
Выходные данные должны быть:
Array[0]={Event 1,Event 2}
Array[1]={Event 3} //different robot
Array[2]={Event 4}
Пожалуйста, помогите с предложениями. Я пытался использовать несколько прослушивателей, по одному для каждого робота, для создания эпизодов, и это работает, но я пытаюсь использовать для этого один оператор EPL. Я пробовал win:time_accum(3sec) group by robot
, но вывод второго примера:
Array[0]={Event 1,Event 2, Event 4}
Array[1]={Event 3}
поскольку временное окно смещается каждый раз, когда происходит событие, система по-прежнему считает, что событие 4 длится менее 3 секунд из-за события 3. как мне создать уникальное временное окно для каждого робота?
Спасибо за ваши предложения, и любая помощь очень ценится.