0

我想使用 Esper 来生成事件集。我正在尝试检测每个时间段内机器人运动的变化,并想知道什么是最好的实施方式。

从事件中生成剧集的规则是

  • 如果一个机器人的新事件时间(例如7 秒,机器人 A)比同一机器人的最新事件(例如 3 秒,机器人 A)超过 3 秒,则新事件属于新的情节。
  • 每个episode应该只代表一个机器人(例如2sec,robotA和3sec,robotB应该输出2episode)

输入数据:

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 秒。如何为每个机器人创建唯一的时间窗口?


感谢您的建议,非常感谢您的任何帮助。

4

1 回答 1

0

我认为表达式批处理窗口可以完成这项工作,它允许比较和输出不包含当前事件的批处理。

于 2013-10-20T15:51:08.217 回答