使用 Esper 如何从第一个事件时间戳开始 X 分钟的窗口?

问题描述 投票:0回答:2

我正在尝试启动一个窗口并让它存活 X 分钟。

Select a,b
from Event.win:time(120) -> this gives me a sliding window
match_recognize(
partition by sensor
...
)

我也试过了

Select a,b
from Event.win:ext_timed(time.time, 120) -> this gives me a sliding window as well
match_recognize(
partition by sensor
...
)

有没有办法从第一个即将到来的事件开始一个 120 秒的窗口,并在新事件到来时结束它?

感谢您的帮助

time esper
2个回答
0
投票

如果你想在某个事件/时间发生时开始处理事件,并在 X 分钟后停止处理,那么这是通过上下文完成的。

create context FromNowForXSeconds start @now end after X seconds;
context FromNowForXSeconds select ... from ....;

0
投票

使用

match recognize
您可以使用
interval
设置分区窗口。

使用可选的

interval
关键字和时间段,您可以控制运行时在指示匹配之前等待更多事件到达的时间,这些事件可能是匹配事件序列的一部分。

例如,从 EPL 参考第 8.8 章开始......下面的间隔计时器在第一个匹配分区序列的事件到达时启动。

TemperatureSensorEvent
match_recognize (
partition by device
measures A.id as a_id, count(B.id) as count_b, first(B.id) as first_b, last(B.id)
 as last_b
pattern (A B*)
interval 5 seconds
define 
 A as A.temp > 100,
 B as B.temp > 100)
© www.soinside.com 2019 - 2024. All rights reserved.