【问题标题】:Obtain duration when certain variable value InfluxQL获取某个变量值 InfluxQL 时的持续时间
【发布时间】:2022-09-24 11:14:50
【问题描述】:
我正在使用 InfluxQL 语言从 InfluxDB 中提取数据。当我有一个具有 True 值的变量时,我想获得持续时间。
我的数据库上有这个:
时间运行
2022-09-16 09:00:00 假
2022-09-16 09:05:00 错误
2022-09-16 09:10:00 真
2022-09-16 09:40:00 真
2022-09-16 10:00:00 假
2022-09-16 12:00:00 真
2022-09-16 12:10:00 假
我想得到这个结果:
持续时间真实:1小时
1 小时 = 50 分钟 (09:10-10:00) + 10 分钟 (12:00-12:10)
有人可以给我一个关于 InfluxQL 查询的建议吗?
谢谢!
标签:
sql
influxdb
influxql
【解决方案1】:
在 InfluxDB 中报告给定状态的总持续时间是可行的,但仅在 Flux 中而不是在 InfluxQL 中(很容易)。
您可以尝试以下步骤:
-
在 v1.8 中启用 Flux 并更改配置 here
-
将数据类型从 True/False 更改为 1/0,以便利用内置函数
-
样品通量可能是:
来自(桶:“yourDatabaseName/autogen”)|> 范围(开始:2022-09-16T00:00:00Z,停止:2022-09-16T23:59:59Z)|> 过滤器(fn:(r)=> r ._measurement == "yourMeasurementName") |> stateDuration(fn: (r) => r._value == 1, column: "state", unit: 1m)
同样,尽管社区已经等待了一段时间,但在 InfluxQL 中仍然无法做到这一点。查看更多详细信息here。