InfluxDB 获取移动平均值的最大值

InfluxDB get maximum value of moving average

要获取 InfluxDB 中一系列的移动平均值,您可以执行以下操作:

SELECT MOVING_AVERAGE(<field_key>,<window>) FROM <measurement_name>

(来自influxdb documentation

这将 return 一个数据集,每个点都有移动平均值。 但是我只想获得该数据集的最大值。

当然我可以在我的脚本中做到这一点,但我必须先下载移动平均线的所有数据,然后在本地进行处理。 (我的InfluxDB服务器不在本地网络)

有没有办法只移动平均线的最大值而不用得到完整的移动平均线数据?

最近发布了支持子查询的 1.2 版 https://docs.influxdata.com/influxdb/v1.2/query_language/data_exploration/#subqueries

这将是解决您的问题的一种方法。您也可以使用较大的时间间隔执行 GROUP BY。当我查看文档时,他们甚至显示:

具有嵌套函数和 GROUP BY time() 子句的 MOVING_AVERAGE() 查询:

SELECT MOVING_AVERAGE(<function>(<field_key>),<window>) FROM <measurement_name> WHERE <stuff> GROUP BY time(<time_interval>)

感谢 Nate Good 向我指出了子查询,我最终得到了以下解决方案:

SELECT MAX(moving_average) FROM (SELECT MOVING_AVERAGE(<field_key>,<window>) FROM <measurement_name>)

这会给你一个最大值和它发生的时间。对于我自己的情况(使用 python 客户端),它给了我这个结果:

ResultSet({'('power', None)': [{'max': 17147.76, 'time': '2016-08-19T19:18:48Z'}]})