How to calculate timediff of two devices #1789
Replies: 11 comments
-
|
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
-
好的,目前 1 我能想到的办法是给状态分析函数增加条件判断,从而可以对比某种条件,例如本例里的状态变化条件下的状态 |
Beta Was this translation helpful? Give feedback.
-
我想起用类似sql语法 case when..的方式来,select case when had_changed(true, StatusCode)==true Then CurrentSystemTime-lag(StartTime) when had_changed(true, StatusCode)==false Then XXXXX End as timediff from demo ,类似这个意思,lag(xxx)就是取的最近的上一条数据的字段值吧 |
Beta Was this translation helpful? Give feedback.
-
我还有一个需求,我计算好的数据能临时保存吗,等下次计算时,临时数据再跟流数据比较,进行计算,现在原始数据用lag能取到,比较我现在进行了一次计算,保存到内存表时,当我需要时再拿出来使用,请问目前有这个功能吗。 |
Beta Was this translation helpful? Give feedback.
-
这个应该不行,lag作为状态函数每次都会计算,不是满足过滤条件才计算。所以才需要添加 WHEN 的语法。
这个目前应该是支持的,lag的参数可以是任何表达式 |
Beta Was this translation helpful? Give feedback.
-
请问保存计算好的临时数据,应该怎么实现呢。 |
Beta Was this translation helpful? Give feedback.
-
ekuiper 用在云端时,是一台设备创建一个流,还是多台设备共用一个流,在云端会处理多台设备,这样计算时数据流入是乱序的,我怎么针对每台设备计算呢,比较状态变化时,获取的是这台设备上一次的最新数据,一台设备一个流能规避这个问题,只是设备多了,要创建好多流行,比较几百台设备时,如果共用一个流,是不是可以用partition by分组设备,分组后相当于每台设备单独计算,类似多线程单独处理每台设备的数据。不知我的这个理解正确不? |
Beta Was this translation helpful? Give feedback.
-
lag(a+b)
都可以
有状态的分析函数可以用 partition by |
Beta Was this translation helpful? Give feedback.
-
我想把流入的数据其中的一个字段做为查询条件,比如根据 设备编码或设备ID查询它的lag,然后新旧数据进行计算,这个可能只创建一个共用的流就行,维护进来比较简单。请问ekuiper有QQ或微信群吗。 |
Beta Was this translation helpful? Give feedback.
-
https://ekuiper.org/docs/zh/latest/#%E8%8E%B7%E5%8F%96%E5%B8%AE%E5%8A%A9 |
Beta Was this translation helpful? Give feedback.
-
应用场景 :
1.当状态变化时,获取这个状态持续时间,
比如当前机器是run状态,当状态发生变化时,我需要判断run状态持续了多久时间
SELECT datediff( second, run status time, run status stop time) from demo
请问这样的业务在以后的新版中是否可以增加支持,工业物联网中这个是常用到基本数据(用于计算OEE)
2.产量发生变化时,当前的产量与上一次产量之前的差值
请问这样的业务在SQl中怎么写
3.当状态不发生变化时,是否可以查询间隔多少秒的数据(实现数据没有变化时,定时上传)
主要是满足以下两个场景:3.1 数据有变化时触发(这个已实现)
3.2 数据无变化定时触发,如每隔60秒上传一次,减少上传到云端的数据量(不知如何实现)
4.sql方式复杂的业务比较难实现,是否可以考虑规则里可以使用脚本来实现过滤数据
Beta Was this translation helpful? Give feedback.
All reactions