complex-event-processing - Esper/NEsper EPL 事件声明
问题描述
我是埃斯珀的新手。任何人都可以帮我定义 EPL 语句以在发生以下情况时捕获事件:
- 假设有具有 3 个属性的事件 - (string)Symbol、(boolean)Value、(datetime)Timestamp。例如 event1 (Symbol-apple, Value-true, Timestamp- 2020.10.07 14:00:00), event2 (Symbol-orange, Value-true, Timestamp- 2020.10.07 14:00:00) 和 event3 (Symbol-香蕉,价值假,时间戳 - 2020.10.07 14:00:00)。如果它们具有相同(或几乎相同)的时间戳,则只有其中一个可以具有属性 - 值为真。在此示例中, event2 符合要求并且应该被捕获。
如何定义语句来捕获它?
谢谢你的帮助。
纳尔苏
解决方案
“窗口”是一个聚合函数(参见手册)返回事件。枚举方法(selectfrom,countof,见手册)用于过滤和选择。像这样的东西。
select window(*).selectFrom(v => v.value=true) as eventWithTrueFlag
from Event#length(3)
having window(*).countOf(v => v.value=true)=1 and
prev(1, timestamp)=timestamp and prev(2, timestamp)=timestamp
“事件”是您的事件类型。您没有说您的事件类型的名称。“Prev”是上一个功能(参见手册)。
推荐阅读
- java - @Value - lombok 和 mapstruct 到另一个 @value 对象
- python - 用python数据框中其他行中存在的关键字屏蔽一列值
- handlebars.js - 车把js中的%符号
- python-3.x - 如何使用正则表达式 python3 替换除空格和换行符旁边的数字之外的所有其他符号
- java - 使用文件元数据的 Firebase 存储安全规则
- c++ - 为什么我会收到以下代码的运行时错误以及如何解决?
- javascript - 我的 FlatList 有什么问题?反应式
- javascript - 如何在 Vue.js 中将数据属性作为变量访问?
- python - 如何拆分包含列值和计数列表的数据框?
- assembly - 如何让 nasm 汇编中断在 Windows(32 位)上工作?