要获得InfluxDB中系列的移动平均值,您可以执行以下操作:
SELECT MOVING_AVERAGE(<field_key>,<window>) FROM <measurement_name>
这将返回每个点上具有移动平均值的数据集。 但是我想只得到该数据集的最大值。
当然我可以在我的脚本中执行此操作,但之后我必须首先下载移动平均线的所有数据,然后在本地处理它。 (我的InfluxDB服务器不在本地网络上)
在没有获得完整的移动平均数据的情况下,有没有办法让仅移动平均线的最大值?
答案 0 :(得分:2)
最近发布了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>)
答案 1 :(得分:1)
感谢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'}]})