Эпизоды генерации эсперов

Я хотел бы использовать 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. как мне создать уникальное временное окно для каждого робота?


Спасибо за ваши предложения, и любая помощь очень ценится.


person Jasonojh    schedule 20.10.2013    source источник


Ответы (1)


Я думаю, что пакетное окно выражения сделает эту работу, оно позволяет сравнивать и выводить пакет, который не включает текущее событие.

person user650839    schedule 20.10.2013