Сиддхи отложенный запрос

Я изо всех сил пытаюсь понять этот запрос:

from heartbeats#window.time(1 hour) insert expired events into delayedStream;

from every e = heartbeats -> e2 = heartbeats[deviceId == e.deviceId]
  or expired = delayedStream[deviceId == e.deviceId]
within 1 hour 10 minutes 
select e.deviceId, e2.deviceId as id2, expired.deviceId as id3
insert into tmpStream;
  • Первый запрос задерживает все События на 1 час.
  • Второй запрос фильтрует все События, произошедшие 1 час назад, и более новых событий не найдено.

Это работает, но я не понимаю этой части:

от каждого e = heartbeats -> e2 = heartbeats [deviceId == e.deviceId] или expired = delayedStream [deviceId == e.deviceId]

Вторая часть запроса (или expired = ...) проверяет, находится ли Событие с данным deviceId в delayedStream. Какова цель первой части и как она сводится к тому, что этот запрос находит устройства, которые не отправляли данные более 1 часа?


person Alex Tbk    schedule 09.07.2019    source источник


Ответы (1)


Я не думаю, что приведенный выше запрос будет точным, если вы хотите проверить, не отправлял ли датчик показания в течение последнего часа. Я настроил окна на 1 минуту и ​​отправил 2 события,

[2019-07-19 16:48:23,774] heartbeats : Event{timestamp=1563535103772, data=[1], isExpired=false}
[2019-07-19 16:48:24,696] tmpStream : Event{timestamp=1563535104694, data=[1, 1, null], isExpired=false}
[2019-07-19 16:48:24,697] heartbeats : Event{timestamp=1563535104694, data=[1], isExpired=false}
[2019-07-19 16:49:23,774] tmpStream : Event{timestamp=1563535163772, data=[1, null, 1], isExpired=false}

Допустим, события приходят в 10 и 10,15, выходы в tmpStream будут в 10,15 (первая часть) и 11 (из-за задержанного потока). Второе совпадение неверно, так как оно должно совпадать в 11.15 в соответствии с вариантом использования.

Однако, если вы хотите улучшить запрос, вы можете использовать функцию Siddhi, определяющую шаблон отсутствия событий для вашего варианта использования, https://siddhi.io/en/v5.0/docs/query-guide/#обнаружение-не-происходящих-событий, это будет проще

person Niveathika    schedule 19.07.2019