如何让InfluxDB中不同measurement的指标查询结果显示在同一行?
问题:如何让InfluxQL查询的两个指标结果显示在同一行


以下是我的查询语句:
SELECT last("used_percent") AS "USED MEMORY", last("uptime_format") AS "UPTIME" FROM "mem", "system"
如何才能让这两个指标的查询结果显示在同一行中?
解决方法
mem和system是两个独立的测量(measurement),直接跨两者查询会返回多行结果。要将指标合并到同一行,核心是通过时间维度关联数据,以下是两种实用方法:
方法1:子查询JOIN关联
分别用子查询获取两个测量的最新值,再基于时间字段关联结果:
SELECT mem.last_used AS "USED MEMORY", system.last_uptime AS "UPTIME" FROM ( SELECT last("used_percent") AS last_used FROM "mem" ) AS mem JOIN ( SELECT last("uptime_format") AS last_uptime FROM "system" ) AS system ON mem.time = system.time
如果两组数据的最新时间不完全匹配,可以添加fill()填充缺失值,或者缩小查询时间范围来对齐。
方法2:按时间分组对齐
通过GROUP BY time()将数据按指定时间窗口分组,取每组内的最新值,再筛选出最新的一组结果:
SELECT last("mem.used_percent") AS "USED MEMORY", last("system.uptime_format") AS "UPTIME" FROM "mem", "system" GROUP BY time(1m) ORDER BY time DESC LIMIT 1
这里的1m是时间窗口,可根据你的数据采集频率调整为10s、5m等合适的值。
内容的提问来源于stack exchange,提问作者Louis Jarrier
相关产品推荐
相关产品推荐

