Esper EPL中的“计数和时间”窗口

时间:2018-09-26 07:55:29

标签: complex-event-processing esper

我有以下用例,我试图用EPL编写,但没有成功。我正在生成不同类型的分析事件,这些事件以不同的时间间隔(1分钟,5分钟,10分钟等)生成。在特殊的分析中,我需要收集4个特定的  每个时间间隔(1min,5min,10min等)都会返回不同类型的Analytics(分析)事件(我将从中计算出另一个分析事件)。这里的条件是,在每个整个时间间隔上,例如,每隔一分钟00:01:00、00:02:00,我想返回4个事件,或者如果事件在((例如2s)。

情况1:事件A,B,C,D在时间00:01:00.500、00:01:00.600、00:01:00.700、00:01:00.800到达-在第四事件到达esper之后,返回所有4个事件的汇总事件

情况2:闲置时间为2秒,事件A,B,C,D在00:01:00.500、00:01:00.600、00:01:00.700、00:01:02.200到达-因为没有到达最后一个事件超出了闲置时间

1 个答案:

答案 0 :(得分:0)

您可以像这样每分钟创建一个触发事件:

insert into TriggerEvent select * from pattern[timer:schedule(date:'1970-01-01T00:00:00.0Z', period: 1 minute, repetitions: -1)]

每分钟到达的触发器可以启动一个模式或上下文。模式似乎足够好。这是这样的:

select * from pattern [every TriggerEvent -> (a=A -> b=B -> c=C -> d=D) where timer:within(2 seconds)]