Сиддхи отложенный запрос - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь понять этот запрос:

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 = сердцебиения -> e2 = сердцебиения [deviceId == e.deviceId] или expired = delayedStream [deviceId == e.deviceId]

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

1 Ответ

0 голосов
/ 19 июля 2019

Я не думаю, что приведенный выше запрос будет точным, если вы хотите проверить, не отправлял ли датчик показания за последние 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/#detecting-non-occurring-events, это будет проще

...