使用按时间分组时,InfluxDB 查询未返回所需的数据总和

问题描述 投票:0回答:1

我正在尝试从 _internal InfluxDB 数据库获取总分片大小。该字段称为 diskBytes,默认情况下每 10 秒存储一次。它被类似的东西查询

SELECT diskBytes FROM "shard" WHERE "database"='_internal' AND time>t1 AND time<t2

每个路径都有一个值(由标签标记),为了获得所有路径的总大小,我需要对它们进行求和。

数据如下:

如果我尝试按较小的时间间隔(小于 10 秒的收集率)对它们进行分组,那么它可以使用查询正常工作

SELECT sum(diskBytes) FROM "shard" WHERE "database"='_internal' AND time>t1 AND time<t2 GROUP BY time(5s)

但是,我现在想以较低的速率查询数据,比如说每 10 分钟一次或其他。然后让它返回这 10 分钟内的第一个/平均值。如果我按任何超过 10 秒的时间进行分组,那么您可以在下面看到它不起作用(它只是对时间间隔中的所有值求和,而不是仅对路径求和):

正确的查询方法是什么?

(我使用的是InfluxDB v1.8)

influxdb influx-line-protocol
1个回答
0
投票

最后,这需要一个“子查询”

SELECT first("diskBytes_summed") FROM (
        SELECT sum("diskBytes") AS "diskBytes_summed" FROM "shard" 
        WHERE "database"='_internal' AND time>t1 AND time<t2 GROUP BY time(5s) fill(null) 
) 
GROUP BY time(10m)

内部查询确保所有数据均已收集并正确汇总,然后外部查询允许下采样到更粗糙的时间网格。

© www.soinside.com 2019 - 2024. All rights reserved.