Эспер порождает эпизоды

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

Правила генерации эпизодов из событий будут

  • Если время нового события (например, 7 секунд, робот A) робота больше, чем на 3 секунды, чем последнее событие (например, 3 секунды, робот A) того же робота, новое событие относится к новому эпизоду.
  • Каждый эпизод должен представлять только одного робота (например, 2 секунды, robotA и 3sec, robotB должен выводить 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. Как мне создать уникальное временное окно для каждого робота?


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

1 ответ

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

Другие вопросы по тегам