在第一个输出之后终止嵌套上下文

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

我有一个游戏,我正在尝试实施欢乐时光功能,如果您获得一定数量的积分,那么每天在特定时间段内您都会获得一些收益。玩家达到积分要求后,事件仅在一个小时内触发一次。

我尝试了几种不同的解决方案:

create context HappyHourContext
    context InitCtx start (0, 16, *, *, *) end pattern[timer:at(0, 17, *, *, *) or TerminationEvent],
    context PartitionCtx partition by playerId from EarnPointsEvent, playerId from TerminationEvent;
 context HappyHourContext
     insert into TerminationEvent select playerId from EarnPointsEvent having sum(points) >= 100;

这仅适用于第一个玩家,因为TerminationEvent不考虑分区。

以下查询似乎可以正常工作,但是它似乎效率很低,因为即使在事件输出后,它仍可以处理事件。

create context HappyHourContext
    context InitCtx start (0, 16, *, *, *) end (0, 17, *, *, *),
    context PartitionCtx partition by playerId from EarnPointsEvent);

 context HappyHourContext
     select playerId from EarnPointsEvent having sum(points) >= 100 output first every 1 hours

输出第一个事件后,是否有一种方法可以终止上下文?或更好的方法吗?

esper
1个回答
0
投票

“分区依据”也接受“终止于”。 doc

© www.soinside.com 2019 - 2024. All rights reserved.