InfluxDB如何对各服务器ID的最新player_count数据点求和
你只需要在现有查询的基础上新增两步操作即可完成求和:首先取消原有分组,将所有服务器的最新数据合并到同一张表,再对玩家数字段求和即可。
完整的Flux查询如下:
from(bucket: "metrics") |> range(start: -1m) |> filter(fn: (r) => r._measurement == "player_count") |> last() // 取消按服务器ID的默认分组,合并所有数据点到同一表格 |> group() // 对玩家数字段求和 |> sum(column: "_value")
补充说明
- 服务器ID一般会作为tag存储,Flux查询默认会按所有tag分组,因此
last()执行后每个服务器的结果是独立的表格,必须先调用group()取消分组才能跨服务器求和。 - 注意调整
range的起始时间覆盖所有服务器的最新上报记录,如果服务器上报频率较低,可以将start: -1m调整为更大的时间范围,比如start: -1h,避免漏算长时间无玩家变动的服务器。 - 如果你的服务器ID是作为字段存储的,可在
last()后新增|> keep(columns: ["_value", "server_id"])过滤多余字段,避免不必要的分组干扰。
内容的提问来源于stack exchange,提问作者Marshall Walker
相关产品推荐
相关产品推荐

