Окно счета и времени в Esper EPL - PullRequest
       20

Окно счета и времени в Esper EPL

0 голосов
/ 26 сентября 2018

У меня есть следующий вариант использования, который я пытаюсь написать в EPL, но безуспешно.Я генерирую аналитические события разных типов, генерируемые через разные интервалы (1мин, 5мин, 10мин, ...).В специальном виде аналитики мне нужно собрать 4 конкретных события Analytics (из которых я буду считать другое аналитическое событие) разных типов, возвращаемых через каждый интервал (1 мин, 5 мин, 10 мин, ...).Существует условие, что на каждом целом интервале, например, на каждую целую минуту 00:01:00, 00:02:00 я хочу вернуть либо 4 события, либо ничего, если события не наступают в некоторый период ожидания посленапример, 2с).

случай 1: события A, B, C, D прибывают в моменты времени 00: 01: 00.500, 00: 01: 00.600, 00: 01: 00.700, 00: 01: 00.800 - справапосле того, как четвертое событие прибывает в esper, возвращается агрегированное событие со всеми 4 событиями

case 2: период простоя составляет 2 секунды, события A, B, C, D прибывают в 00: 01: 00.500, 00:01:00.600, 00: 01: 00.700, 00: 01: 02.200 - ничего не получено, так как последнее событие находится вне периода ожидания

1 Ответ

0 голосов
/ 26 сентября 2018

Вы можете создать событие триггера каждую минуту следующим образом:

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)]
...