与 lastUnique() 相反

Opposite of lastUnique()

一般来说,Esper 和 EPL 都是新手,我有两个用例,它们基本上是彼此相反的。首先,我需要使用 firstunique(*parameters*).win:time(*time*) 在 timewindow 内捕获所有唯一事件。

现在我需要做的恰恰相反,基本上捕获所有到达 window 并且没有被该语句抛出的事件,基本上是所有重复项。

我怎样才能做到这一点?谢谢!

您可以使用子查询和 "not exists"。例如:

select * from Event e1 where not exists (select * from Event#firstunique(*parameters*)#time(*time*) e2 where e1.parameters = e2.parameters)

我实际上找到了一个解决方案,它涉及在比较参数的基础上对传入事件使用唯一 ID。

查询看起来像这样:

select * from Event a where exists (select * from Event.std:firstUnique(*parameters*).win:time(*time*) b where a.eventId <> b.eventId)

这解决了我遇到的问题,其中 exists 方法会 return 每个事件(重复和唯一事件),因为子查询中的 window 会先补上。