InfluxDB计算信号开启多长时间 [英] InfluxDB calculate for how long was a signal switched on

查看:0
本文介绍了InfluxDB计算信号开启多长时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一些boolean类型值的测量值,我想计算信号在特定时间段内处于true状态的时间。

例如:

日期时间 状态
01.01.2021 01:00 True
01.01.2021 04:00 True
01.01.2021 05:30 FALSE
02.01.2021 23:00 True
03.01.2021 01:30 FALSE
05.01.2021 06:00 True

应转换为:

日期时间 持续时间(%1小时)
01.01.2021 4.5
02.01.2021 1
03.01.2021 1.5
04.01.2021 0
05.01.2021 18

我知道influx有返回后续记录之间的时间的ELAPSED函数,但这似乎对我没有任何帮助。我也用flux试过,但也碰到了障碍(那只是出于学术目的,我需要用InfluxQL)。

我已经找到this,但解决方案是使用INTEGRAL(这要求您的值为0或1,而不是布尔值,甚至有人没有获得正确的值)并切换到Timescale DB。

这让我大吃一惊,涌入仍然不支持这一点,它似乎是涌入所用于的那种数据的最常见用例之一。

如果有人有任何我可能遗漏的信息或想法,我将非常感激。

推荐答案

设法使某些内容正常工作,但为此,您需要能够使用1和0而不是布尔值,以便您可以将INTEGRAL函数与子查询结合使用。

SELECT INTEGRAL(value, 1h) as "integral_1h" FROM 
     (SELECT MEAN(value) AS 
     "value" FROM your_series_name  WHERE (time >= '2021-01- 
      01T00:00:00+00:00' 
      AND time < '2021-01-06T00:00:00+00:00') GROUP BY time(1s) 
      fill(previous))  
WHERE (time >= '2021-01-01T00:00:00+00:00' AND time < '2021-01- 
06T00:00:00+00:00') GROUP BY time(1d) fill(null) ORDER BY time ASC;

这篇关于InfluxDB计算信号开启多长时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆