esper - Esper 在滑动时间窗口中检测与先前事件不同的事件
问题描述
我正在尝试编写一个 EPStatement,它将匹配没有指定字段的任何事件“类似于”滑动时间窗口中的另一个事件。例如,仅匹配“值”与滑动窗口中任何其他事件的距离至少为 3 的事件,
At t=t_0, E0={value=0} // Match
At t=t_1, E1={value=9} // Match
At t=t_2, E2={value=1} // Don't match since value is within 3 of E0.value
我正在寻找一个可以使用任何比较两个值的表达式作为“相似性”度量的语句。我查看了使用模式或匹配识别,但它们似乎不支持与未知数量的先前事件进行这种类型的动态比较。
解决方案
select * from SomeEvent#keepall as e
having not window(*).anyOf(p => Math.abs(p.value - e.value) <= 3 and p.id != e.id)
举行window(*)
所有活动。通过anyOf
窗口找到任何匹配项。不包括当前p.id=e.id
事件。字段id
是事件的唯一 ID,您可能拥有或不拥有作为事件的事件属性。
推荐阅读
- amazon-web-services - Beanstalk 环境覆盖 Auto Scaling 组中的启动模板设置?
- react-native - React Native:在 ScrollView 中反向延迟加载/分页
- python - UnicodeDecodeError: ('unknown', u'\xe0', 0, 1, '')
- c# - DotNetCore 在 Windows 中捕获屏幕截图
- npm - 如何在 package.json 或 bower.json 中添加公共 bitbucket 存储库
- java - 使用 OpenCSV 解析 csv 文件时找不到类“java.beans.Introspector”
- java - 字段“userProfiles”上的对象“用户”中的字段错误:拒绝值 [3];
- python - Python 多处理进程 ID
- matlab - MATLAB:将一个时间表集成到另一个时间表中
- python - Pandas 索引因时区感知时间戳而中断