我正在查询influxdb以在grafana中生成图形。 Influxdb包含每5秒钟带有时间戳的kW太阳能产量。我想将每天的太阳能产量从4PM汇总到9PM。在UTC中,它变成2300至0400。我可以做2300至0000,也可以分别从0000至0400,但是我不知道如何将它们与grafana一起添加。或者在一个查询中执行2300-0400会很好。这是我对2300至0000和0000至0400的2个查询:
SELECT first("integral") FROM ( SELECT integral("kW",1h) FROM "solar" WHERE TIME >'2019-10-04T23:00:00Z' GROUP BY time(1h)) WHERE TIME >'2019-10-04T23:00:00Z' GROUP BY time(24h,23h)
SELECT first("integral") FROM ( SELECT integral("kW",1h) FROM "solar" WHERE TIME >'2019-10-05' GROUP BY time(4h)) WHERE TIME >'2019-10-05' GROUP BY time(24h)
更新:以下适用于我想要的时间范围的1小时:
SELECT first("integral") FROM ( SELECT integral("kW",1h) FROM "solar" WHERE TIME >'2019-10-04 16:00:00' GROUP BY time(1h)) WHERE TIME >'2019-10-04 16:00:00' GROUP BY time(24h,16h) tz('America/Los_Angeles')
但是,如果我将时间跨度增加到2h,则会返回错误的结果:
SELECT first("integral") FROM ( SELECT integral("kW",1h) FROM "solar" WHERE TIME >'2019-10-04 16:00:00' GROUP BY time(2h)) WHERE TIME >'2019-10-04 16:00:00' GROUP BY time(24h,16h) tz('America/Los_Angeles')
您可以使用时区TZ
子句https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/#the-time-zone-clause
您还可以在time(5h)
的23:00组开始(它基本上将包含第二天的数据并保存到当天的23:00),然后获取最后(而不是第一)结果持续24小时。
所以类似(请注意附加的as kW
别名]
SELECT last("kW") FROM ( SELECT integral("kW",1h) as kW FROM "solar" WHERE TIME >'2019-10-04T23:00:00Z' GROUP BY time(5h)) WHERE TIME >'2019-10-04T23:00:00Z' GROUP BY time(24h)
或执行以上+ TZ。不确定在您的用例中到底该用什么。