Fluxdb:计算布尔事件的持续时间? [英] influxdb: calculating duration of boolean events?

查看:0
本文介绍了Fluxdb:计算布尔事件的持续时间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我从一个门传感器那里得到的数据保存在一个数据库中。这是一个布尔传感器(门是打开的(值为false),也可以是关闭的(值为true)),该表如下所示:

name: door
--------------
time            value
1506026143659488953 true
1506026183699139512 false
1506026751433484237 true
1506026761473122666 false
1506043848850764808 true
1506043887602743375 false

我想计算一下在给定的时间段内门打开的时间有多长。ELAPSED函数使我接近,但我不确定如何(A)将其限制为初始值为false的那些区间,或(B)从类似select elapsed(value, 1s) from door的输出中识别"开放"区间。

我希望我能做些什么:

select elapsed(value, 1s), first(value) from door

但这并没有给我带来任何有用的东西:

name: door
--------------
time            elapsed first
0               true
1506026183699139512 40  
1506026751433484237 567 
1506026761473122666 10  
1506043848850764808 17087   
1506043887602743375 38  

我希望有更多类似的东西:

name: door
--------------
time            elapsed first
1506026183699139512 40  true
1506026751433484237 567 false
1506026761473122666 10  true
1506043848850764808 17087   false
1506043887602743375 38  true

除了我自己提取数据并在Python中处理之外,有什么方法可以通过impxdb查询来实现这一点吗?

推荐答案

我也遇到过同样的问题。在使用InfluxDB遇到这堵墙,但在这里或其他地方找不到干净的解决方案后,我最终切换到TimscaleDB(基于PostgreSQL),并使用SQLwindow function解决它,使用lag()计算到前一个时间值的增量。

对于OP的数据集,可能的解决方案如下所示:

SELECT
  "time",
  ("time" - lag("time") OVER (ORDER BY "time"))/1000000000 AS elapsed,
  value AS first
FROM door
ORDER BY 1
OFFSET 1;  -- omit the initial zero value

输入:

CREATE TEMPORARY TABLE "door" (time bigint, value boolean);
INSERT INTO "door" VALUES
  (1506026143659488953, true),
  (1506026183699139512, false),
  (1506026751433484237, true),
  (1506026761473122666, false),
  (1506043848850764808, true),
  (1506043887602743375, false);

输出:

        time         | elapsed | first 
---------------------+---------+-------
 1506026183699139512 |      40 | f
 1506026751433484237 |     567 | t
 1506026761473122666 |      10 | f
 1506043848850764808 |   17087 | t
 1506043887602743375 |      38 | f
(5 rows)

这篇关于Fluxdb:计算布尔事件的持续时间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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