与 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 会先补上。
一般来说,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 会先补上。