InfluxDB 基于特定值的运行时间
InfluxDB elapsed time based on a specific value
刚刚接触 InfluxDB。
我有一个受监控的 IO 信号,每次更改时 InfluxDB 都会记录它的时间戳。数据如下:
time value
---- -----
2020-03-19 06:02:50 0
2020-03-19 06:01:28 1.00
2020-03-19 03:25:58 0
2020-03-19 03:22:38 1.00
2020-03-18 23:07:47 0
2020-03-18 23:06:47 1.00
2020-03-18 21:14:47 0
2020-03-18 21:12:45 1.00
2020-03-18 21:11:23 0
2020-03-18 21:09:41 1.00
2020-03-18 21:07:30 0
...
现在我只想获取 value = 1 的经过时间(这意味着开关打开的经过时间)
首先我尝试了 SELECT elapsed("value")/3600/1000000000 FROM "MyMeasurement"
然后我得到了这样一个系列:
time elapsed
---- -----
2020-03-19 06:02:50 0.02
2020-03-19 06:01:28 2.59
2020-03-19 03:25:58 0.06
2020-03-19 03:22:38 4.25
2020-03-18 23:07:47 0.02
2020-03-18 23:06:47 1.87
2020-03-18 21:14:47 0.03
2020-03-18 21:12:45 0.02
2020-03-18 21:11:23 0.03
2020-03-18 21:09:41 0.04
2020-03-18 21:07:30 0.02
...
如何将系列缩小到我关心的 [0.02、0.06、0.02、0.03、0.03、0.02 ...]?我必须在 InfluxDB 查询命令中执行此操作,因为我将其弹出到 Grafana 面板上。有人可以帮我解决这个问题吗?
您可以使用嵌套查询。尝试这样的事情
SELECT elap FROM
(SELECT difference("value") as diff, elapsed("value") as elap FROM "MyMeasurement")
WHERE diff > 0
如果 "value" 中的值始终只有 0 和 1,则连续值之间的差将为 1 或 -1。您可以将其用作过滤器,以便仅针对您想要的记录获取 elapsed。 (不确定你是否必须取 1 或 -1,只需检查)
PS: 我感觉我已经在 Whosebug 上回答过类似的问题,但找不到它。
刚刚接触 InfluxDB。
我有一个受监控的 IO 信号,每次更改时 InfluxDB 都会记录它的时间戳。数据如下:
time value
---- -----
2020-03-19 06:02:50 0
2020-03-19 06:01:28 1.00
2020-03-19 03:25:58 0
2020-03-19 03:22:38 1.00
2020-03-18 23:07:47 0
2020-03-18 23:06:47 1.00
2020-03-18 21:14:47 0
2020-03-18 21:12:45 1.00
2020-03-18 21:11:23 0
2020-03-18 21:09:41 1.00
2020-03-18 21:07:30 0
...
现在我只想获取 value = 1 的经过时间(这意味着开关打开的经过时间)
首先我尝试了 SELECT elapsed("value")/3600/1000000000 FROM "MyMeasurement"
然后我得到了这样一个系列:
time elapsed
---- -----
2020-03-19 06:02:50 0.02
2020-03-19 06:01:28 2.59
2020-03-19 03:25:58 0.06
2020-03-19 03:22:38 4.25
2020-03-18 23:07:47 0.02
2020-03-18 23:06:47 1.87
2020-03-18 21:14:47 0.03
2020-03-18 21:12:45 0.02
2020-03-18 21:11:23 0.03
2020-03-18 21:09:41 0.04
2020-03-18 21:07:30 0.02
...
如何将系列缩小到我关心的 [0.02、0.06、0.02、0.03、0.03、0.02 ...]?我必须在 InfluxDB 查询命令中执行此操作,因为我将其弹出到 Grafana 面板上。有人可以帮我解决这个问题吗?
您可以使用嵌套查询。尝试这样的事情
SELECT elap FROM
(SELECT difference("value") as diff, elapsed("value") as elap FROM "MyMeasurement")
WHERE diff > 0
如果 "value" 中的值始终只有 0 和 1,则连续值之间的差将为 1 或 -1。您可以将其用作过滤器,以便仅针对您想要的记录获取 elapsed。 (不确定你是否必须取 1 或 -1,只需检查)
PS: 我感觉我已经在 Whosebug 上回答过类似的问题,但找不到它。