InfluxDB积分在丢失数据后提供高价值

时间:2018-04-17 01:04:18

标签: influxdb

我在一个名为" Power"的测量/表格中将放大器,伏特和瓦特存储在Influxdb中。更新频率大约每秒一次。我可以使用积分函数以小时为单位获得电源使用(以安培小时或瓦时为单位)。这非常好用,所以我可以得到一个24小时内每小时使用的功率图。我的SQL在下面。

问题是如果数据存在差距,那么当它返回时我会得到一个巨大的峰值。例如,如果数据从下午3点到下午5点45分丢失,则下午5点的结果显示出巨大的峰值。我可以看到的原因是差距接近3小时,因此它只计算图表下的面积并将其归为5 PM值。我可以避免吗?

SELECT INTEGRAL(Watts) FROM Power WHERE time > now() - 24h GROUP BY time(1h)

2 个答案:

答案 0 :(得分:1)

您需要在查询的分组中使用fill()(请参阅Influx fill() usage的文档)。 在你的情况下,fill(none)或fill(0)应该完成这项工作。

答案 1 :(得分:1)

我对Influx也有类似的问题。事实证明,integral()不支持fill(),正如Yuri Lachin在评论中指出的那样。

由于无论如何都是按小时分组,因此该小时的平均功率(瓦特)等于该小时的能耗(瓦特-小时),因此您可以使用{{1 }}值在这里,您应该获得正确的结果。

我正在使用的查询是:

mean()

对于每日数字,我可以重新使用SELECT mean("load_power") AS "load" FROM "power_readings" WHERE $timeFilter GROUP BY time(1h) fill(0) ,因为我很少会有跨越多天的数据空白,因此不需要填充符。

由于您可以在此查询中使用integral()函数,因此可以决定哪种方法最有意义(请参阅https://docs.influxdata.com/influxdb/v1.7/query_language/data_exploration/#group-by-time-intervals-and-fill