2016-03-09 187 views
1

我试图从我的温度测量中滤除不正确的峰值。例如,我的平均值为15°C,变化不大。但有时我的传感器发送0°C或4°C,这是发送错误。我试过influxdb:如何通过stddev过滤查询

select temperature from "sensor" where temperature > mean(temperature) - stddev(temperature)

这似乎工作。然而,上限并不:

select temperature from "sensor" where temperature < mean(temperature) + stddev(temperature)

这只是表明

成功! (没有结果显示)

更惨的是,

select temperature from "sensor" where temperature < max(temperature)

也揭示

成功! (无结果显示)

这似乎是一个错误给我。有什么建议么?

+0

>这似乎工作。 它不工作。该查询没有格式错误,并且已正确收到,因此管理界面报告“成功”,但“没有显示结果”意味着没有与您的查询结果相匹配的内容。 函数在SELECT子句之外无效。这似乎是管理界面中的一个错误,它不报告语法错误。 对于所有查询,我都建议使用[CLI](https://docs.influxdata.com/influxdb/v0.11/tools/shell/),因为管理界面遮挡了太多东西。 – beckettsean

回答

0

这听起来像你想要的是

SELECT temperature FROM sensor WHERE temperature > 4

为了实现使用STDDEV的你原来的目标,意味着消除了范围值,考虑Kapacitor。它是InfluxDB的批处理/流处理伴侣,支持任意用户定义的功能,以及随时间推移维护状态。 InfluxDB中没有子功能或HAVING子句,所以它不能做你想做的事情。