Делая корреляцию между входящими событиями, мы можем сделать некоторые вычисления с прошлыми данными, основанными на указанном временном интервале. Как упомянуто здесь .
Я делаю что-то вроде этого, чтобы получать события, основанные на некотором указанном временном интервале, используя ключевое слово within
.
@info(name='dg-start-check-query')
from every (e1=InputStream) -> e2=InputStream[e1.meter_id=='s1' and e2.meter_id=='s1' and convert(e2.current_avg, 'double')-convert(e1.current_avg, 'double')==convert(e2.current_avg, 'double') and convert(e1.current_avg, 'double')+convert(e2.current_avg, 'double')!=0 and convert(e1.current_avg, 'double')==0]
within 1 min
select time:dateFormat(e2.device_time, 'HH:mm:ss.SSS yyyy-MM-dd') as date_time
insert into OutputStreamStarted;
Как я могу позволить этому коду получать последние 2 или 3 события и выполнять вычисления над ним так же, как события собираются с использованием window
?Этот код будет получать все события в течение определенного периода времени и выполняться несколько раз, если несколько событий удовлетворяет его критериям.