InfluxDB 1.8查询求助:按最新时间戳统计tag1分组下不同tag2数量
InfluxDB 查询:最新时间戳下按tag1分组统计不同tag2数量
基于InfluxQL的查询语句
适用于InfluxDB 1.x或兼容InfluxQL的2.x版本,通过子查询直接定位最新时间戳并统计:
SELECT COUNT(DISTINCT(tag2)) AS unique_tag2_count FROM host_info WHERE time = (SELECT MAX(time) FROM host_info) GROUP BY tag1;
基于Flux的查询语句(InfluxDB 2.x推荐)
Flux作为2.x原生查询语言,逻辑更直观:
// 获取数据集的最新时间戳 latestTime = from(bucket: "your_bucket") |> range(start: -infinity) |> filter(fn: (r) => r._measurement == "host_info") |> max(column: "_time") |> findRecord(fn: (key) => true, idx: 0) // 按tag1分组,统计最新时间戳下不同tag2的数量 from(bucket: "your_bucket") |> range(start: -infinity) |> filter(fn: (r) => r._measurement == "host_info" and r._time == latestTime._time) |> group(columns: ["tag1"]) |> distinct(column: "tag2") |> count(column: "tag2") |> rename(columns: {tag2: "unique_tag2_count"})
注意事项
- 替换代码中的
host_info为你的实际measurement名称 - Flux查询里的
your_bucket需要替换为你的存储桶名称 DISTINCT(InfluxQL)和distinct()(Flux)会自动去重,确保同一tag1下相同tag2只计数一次
内容的提问来源于stack exchange,提问作者fuba77
相关产品推荐
相关产品推荐

