使用 EPL 查询 ESPER 匹配最大连续事件

Matching max continuous events with EPL query ESPER

我有活动要来 esper 并且我有这个查询

select * from Location match_recognize (
                     measures A[0] as loc1 , count(A.locationID) as idcount
                     pattern (A{3,})
                     define
                        A as A.lat > (prev(A.lat, 1) -100) and A.lat < (prev(A.lat, 1) +100) and A.lon > (prev(A.lon, 1) -100)  and A.lon < (prev(A.lon, 1) +100)) ;

该查询命中查找 3 个相近位置的序列。我搜索并发现我的数据有四个连续的。我希望查询命中所有 4 个。我发现由于默认的 skip 子句,查询在有 3 个匹配项时停止。我想更改该设置或查找至少有 3 个连续 A 时命中并在 A 未命中时停止的查询。

您可以定义一个结束搜索的“B”并使用“模式(A{3,} B)”。这样,搜索仅在运行时找到 B 时结束。B 的定义子句将指定模式如何结束。使用“last”聚合获取最后一个 A 值。