在 InfluxDB 中:我无法将表达式转换为整数
In InfluxDB: I am unable to convert an expression to an integer
目的是Grafana 6.6.1
将从InfluxDb 1.8.2
查询这个
我想根据在仪表板中选择的时间段 $timeFilter
使用 moving_average() 功能。
我在 CLI 中尝试了一些查询。在以下代码片段中,time > '2020-10-27'
将在 Grafana 中替换为 $timeFilter
。
查询 1:
SELECT round(count("Temp")*0.1) FROM "Consumption" WHERE time > '2020-10-27'
输出:
name: Consumption
time round
---- -----
2020-10-27T00:00:00.000000001Z 7
查询 2:
SELECT moving_average("Temp", 7) FROM "Consumption" WHERE time > '2020-10-27'
输出:
name: Consumption
time moving_average
---- --------------
2020-11-03T00:00:00Z 7.535714285714286
2020-11-04T00:00:00Z 7.184528571428571
2020-11-05T00:00:00Z 6.833342857142857
2020-11-06T00:00:00Z 7.303585714285714
.....etc
但是,我无法合并这些查询
查询 3:
SELECT moving_average("Temp", round(count("Temp")*0.1)) FROM "Consumption" WHERE time > '2020-10-27'
输出:
ERR: second argument for moving_average must be an integer, got *influxql.Call
所以我猜 round()
不是 return 整数。关于如何解决这个问题有什么建议吗?
编辑
奖金问题:如何确保 moving_average()
中的第二个参数永远不会低于 1。如果选择较短的时间跨度,则应为 1
好吧,我现在开始工作了。
在 Grafana 中,我向仪表板添加了一个变量。
变量
Name: MyRollingAvgValue
、Type: Query
、Hide: Variable
、Refrech: on time range change
以及变量的查询本身:
SELECT mean(MyVal::integer) As MyRollingAvg FROM
( SELECT 1+round(count("Temp")*0.1) as MyVal FROM "Consumption" WHERE $timeFilter )
仪表板中的面板
查询选项卡
SELECT moving_average("Temp", $MyRollingAvgValue) FROM "Consumption" WHERE $timeFilter
ALIAS BY: °C ($MyRollingAvgValue day avg)
可视化选项卡
Add series override
alias or regex
--> /.*day avg/
目的是Grafana 6.6.1
将从InfluxDb 1.8.2
我想根据在仪表板中选择的时间段 $timeFilter
使用 moving_average() 功能。
我在 CLI 中尝试了一些查询。在以下代码片段中,time > '2020-10-27'
将在 Grafana 中替换为 $timeFilter
。
查询 1:
SELECT round(count("Temp")*0.1) FROM "Consumption" WHERE time > '2020-10-27'
输出:
name: Consumption
time round
---- -----
2020-10-27T00:00:00.000000001Z 7
查询 2:
SELECT moving_average("Temp", 7) FROM "Consumption" WHERE time > '2020-10-27'
输出:
name: Consumption
time moving_average
---- --------------
2020-11-03T00:00:00Z 7.535714285714286
2020-11-04T00:00:00Z 7.184528571428571
2020-11-05T00:00:00Z 6.833342857142857
2020-11-06T00:00:00Z 7.303585714285714
.....etc
但是,我无法合并这些查询
查询 3:
SELECT moving_average("Temp", round(count("Temp")*0.1)) FROM "Consumption" WHERE time > '2020-10-27'
输出:
ERR: second argument for moving_average must be an integer, got *influxql.Call
所以我猜 round()
不是 return 整数。关于如何解决这个问题有什么建议吗?
编辑
奖金问题:如何确保 moving_average()
中的第二个参数永远不会低于 1。如果选择较短的时间跨度,则应为 1
好吧,我现在开始工作了。
在 Grafana 中,我向仪表板添加了一个变量。
变量
Name: MyRollingAvgValue
、Type: Query
、Hide: Variable
、Refrech: on time range change
以及变量的查询本身:
SELECT mean(MyVal::integer) As MyRollingAvg FROM
( SELECT 1+round(count("Temp")*0.1) as MyVal FROM "Consumption" WHERE $timeFilter )
仪表板中的面板
查询选项卡
SELECT moving_average("Temp", $MyRollingAvgValue) FROM "Consumption" WHERE $timeFilter
ALIAS BY: °C ($MyRollingAvgValue day avg)
可视化选项卡
Add series override
alias or regex
--> /.*day avg/