如何在CnosDB的普通SELECT语句中区分tags与fields?
有两种可靠的简便方法,不需要靠查询结果的列顺序猜:
- 直接查询表元数据,是最准确的方式
执行SHOW TAG KEYS FROM <表名>,返回结果中列出的列全部为tag列;执行SHOW FIELD KEYS FROM <表名>,返回的列全部为field列,同时会返回每个field对应的数据类型。
以示例中的air表为例:
执行后会返回-- 查询指定表的所有tag列 SHOW TAG KEYS FROM air;station这一个tag列;再执行查询field的语句:
会返回-- 查询指定表的所有field列 SHOW FIELD KEYS FROM air;pressure、temperature、visibility三个field列,和表的实际结构完全一致。 - 开启客户端元数据显示,查数据时同步识别
如果你使用官方命令行工具cnos-cli,可以在执行查询前运行如下设置命令:
开启后再执行普通SELECT查询,返回结果会在每个列名下方标注列属性:tag列会明确标记为SET DISPLAY_META = true;TAG,field列会标记对应的数据类型(比如BIGINT、DOUBLE、STRING等),查业务数据的同时就能直接区分两类列,不需要额外查询元数据。
注意:默认的SELECT查询输出不会对tag和field做特殊标识,也不会强制按照time、tag、field的顺序排列输出列,靠列的位置判断类型是不可靠的。
内容的提问来源于stack exchange,提问作者Munin
相关产品推荐
相关产品推荐

