InfluxDB查询:获取measurement中各series的最新一行数据
获取InfluxDB中每个Series的最新一行数据
我来给你支招!要在InfluxDB的test_result measurement里获取每个series的最新一行数据,其实用GROUP BY结合聚合函数就能轻松搞定,刚好匹配你的场景:
核心思路
你的series是由service和team这两个标签组合定义的,所以我们可以按这两个标签分组,再用LAST()聚合函数提取每组(也就是每个series)的最新字段值,同时加上时间范围过滤。
具体查询语句
针对你的场景,这里有个直接可用的查询:
SELECT LAST(status), LAST(duration), service, team FROM test_result -- 替换成你需要的时间范围,支持时间戳或ISO格式时间 WHERE time >= 1523370000000000000 AND time <= 1523380000000000000 GROUP BY service, team ORDER BY time DESC
语句解释
LAST(status)和LAST(duration):分别提取每个series中status和duration字段的最新值GROUP BY service, team:按照你的series标识标签分组,确保每个分组对应一个独立的seriesWHERE子句:限定查询的时间范围,你可以换成ISO格式的时间(比如'2018-04-10T00:00:00Z')或者时间戳ORDER BY time DESC:让结果按最新时间排序,方便查看
扩展:保留最新时间戳
如果你需要同时获取每个series最新数据的时间戳,可以把LAST(time)也加入查询:
SELECT LAST(time) AS last_time, LAST(status), LAST(duration), service, team FROM test_result WHERE time >= 1523370000000000000 AND time <= 1523380000000000000 GROUP BY service, team ORDER BY last_time DESC
这样返回的结果里就会包含每个series最新数据的具体时间啦~
内容的提问来源于stack exchange,提问作者Roy A
相关产品推荐
相关产品推荐

