从 Influxdb 中选择多个 values/aggregators,不包括时间

Selecting multiple values/aggregators from Influxdb, excluding time

我得到了一个由

组成的流入数据库 table
> 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列?其次,创建这样一个 table 的 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

我按照说明操作,但是在我将一些数据输入数据库并等待 1 分钟后,`SELECT * FROM "infinite"."mean_duration" 没有 return任何东西。

这种方法是正确的还是我应该继续其他地方?目标是在grafana中看到更新的table,一分钟刷新一次。

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

InfluxDB 没有 tables,但有测量值。我想您只需要使用适当的 grouping 进行查询,不需要提前连续查询等。尝试改进此查询*:

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

*你的情况下分组可能有问题,因为 artnum 是 InfluxDB field - 更好的选择是将 artnum 保存为 InfluxDB tag.