首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Siddhi延迟查询

Siddhi延迟查询
EN

Stack Overflow用户
提问于 2019-07-09 06:57:45
回答 1查看 135关注 0票数 0

我很难理解这个问题:

代码语言:javascript
复制
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 = heartbeatsdeviceId == e.deviceId或过期= delayedStreamdeviceId == e.deviceId

查询的第二部分(或失效=.)检查具有给定deviceId的事件是否位于delayedStream上。第一部分的目的是什么,以及它是如何结合在一起的,这个查询发现的设备没有发送超过1小时的数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-19 11:23:20

我不认为上述查询将是准确的,如果您想检查传感器是否没有发送读取在过去1小时。我把窗户调整为1分钟,发送了两个事件,

代码语言:javascript
复制
[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匹配。

但是,如果您想改进查询,可以在用例https://siddhi.io/en/v5.0/docs/query-guide/#detecting-non-occurring-events中使用Siddhi检测无发生模式特性,这将更加简单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56946907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档