我正在尝试启动一个窗口并让它存活 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 秒的窗口,并在新事件到来时结束它?
感谢您的帮助
如果你想在某个事件/时间发生时开始处理事件,并在 X 分钟后停止处理,那么这是通过上下文完成的。
create context FromNowForXSeconds start @now end after X seconds;
context FromNowForXSeconds select ... from ....;
使用
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)