如何获取InfluxDB序列的基础名称列表(不含标签)?
如何从InfluxDB的SHOW SERIES结果中仅获取序列的基础名称(不含标签)
嘿,这个需求我太熟悉了!要从SHOW SERIES返回的结果里剥离标签,只拿到不带标签的序列基础名称(也就是InfluxDB里的measurement名称),有几个实用的方法,根据你的场景选就行:
方法1:直接用SHOW MEASUREMENTS(最推荐)
这是最简单高效的方式,因为序列的基础名称本质就是measurement,SHOW MEASUREMENTS会直接返回数据库中所有唯一的measurement列表,完全不需要处理标签部分:
SHOW MEASUREMENTS
这个命令的结果就是纯纯的基础序列名称,没有任何标签干扰,性能也比从SHOW SERIES里提取好得多,优先用这个!
方法2:从SHOW SERIES中用正则提取
如果你必须基于SHOW SERIES的结果来处理,可以利用InfluxQL的正则匹配功能。因为SHOW SERIES返回的key字段格式是measurement,tag1=value1,tag2=value2,...,我们只需要匹配第一个逗号之前的内容:
SHOW SERIES WITH KEY =~ /^[^,]+/
这里的正则^[^,]+表示从字符串开头开始,匹配所有不是逗号的字符,刚好就能截取出不带标签的基础序列名称。
方法3:用SELECT DISTINCT查询
如果需要和其他查询逻辑结合,也可以用DISTINCT函数来提取唯一的measurement名称:
SELECT DISTINCT("_measurement") FROM /.*/
这里/.*/是匹配所有measurement,_measurement是InfluxDB的保留字段,存储的就是序列的基础名称,DISTINCT会帮你去重,返回所有唯一的基础名称。不过注意,当数据库数据量很大时,这个方法的性能可能不如前两种。
内容的提问来源于stack exchange,提问作者Ilya Vassilevsky
相关产品推荐
相关产品推荐

