从Influxdb中选择多个值/聚合器,不包括时间

时间:2018-10-09 11:57:12

标签: grafana influxdb

我有一个由

组成的流入数据库表
> SELECT * FROM results
name: results
time                artnum   duration 
----                ------   --------   
1539084104865933709 1234     34  
1539084151822395648 1234     81  
1539084449707598963 2345     56  
1539084449707598123 2345     52

和其他标签。 artnumduration都是字段(尽管可以更改)。我现在正在尝试创建一个查询(用于grafana中),该查询将为我提供以下结果以及计算出的mean()和该artnum的测量次数:

artnum   mean_duration  no. measurements
------   --------       -----  
1234     58             2
2345     54             2

首先:是否可以排除time列?其次,influx db创建这种表的方式是什么?我从

开始
SELECT mean("duration"), "artnum" FROM "results"

产生ERR: mixing aggregate and non-aggregate queries is not supported。然后我发现https://docs.influxdata.com/influxdb/v1.6/guides/downsampling_and_retention/,看起来像我想要做的。然后,我创建了一个无限保留策略(持续时间为0s)和一个连续查询

> CREATE CONTINUOUS QUERY "cq" ON "test" BEGIN 
SELECT mean("duration"),"artnum"
INTO infinite.mean_duration 
FROM infinite.test 
GROUP BY time(1m) 
END

我按照说明进行操作,但是在将一些数据馈送到数据库并等待1m之后,`SELECT * FROM“ infinite”。“ mean_duration”没有返回任何内容。

是正确的选择还是我应该继续其他选择?真正的目标是查看grafana中更新后的表格,每分钟刷新一次。

1 个答案:

答案 0 :(得分:1)

InfluxDB是一个时间系列数据库,因此您确实需要时间维度-响应中也是如此。如果您的查询返回非时间序列数据,您将很难使用Grafana。因此,请勿尝试从查询中删除time。更好的选择是在Grafana表格面板中隐藏时间-使用column styles并设置Type: Hidden

InfluxDB没有表,但是有测量值。我猜您只需要使用正确的grouping进行查询,而无需提前进行连续查询等。请尝试改进此查询*:

SELECT 
  MEAN("duration"), 
  COUNT("duration") 
FROM results
  GROUP BY "artnum" fill(null)

*您可能遇到分组问题,因为artnum是InfluxDB field-更好的选择是将artnum另存为InfluxDB tag