我想使用 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 秒。如何为每个机器人创建唯一的时间窗口?
感谢您的建议,非常感谢您的任何帮助。