我有一个门传感器的influxdb数据库中的数据。这是一个 bool 型传感器(门是打开的(值是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,有什么方法可以通过influxdb查询来做到这一点?

最佳答案

我也遇到了这个问题,我想对一个标记打开的持续时间求和,这在时间序列库中的信号处理中很常见,但是influxdb似乎并不能很好地支持它。我尝试使用值1的标志进行INTEGRATE,但是似乎并没有给我正确的值。最后,我求助于仅计算数据源中的间隔,将其作为单独的字段发布在influxdb中,然后进行汇总。这样效果更好。

关于influxdb:计算 bool 事件的持续时间?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46368166/

10-16 07:08