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