TDengine中超级表的TAG管理
超级表的这个概念在TDengine应该算是很重要,很实用的一个东西了。就是学习的时候有的时候有点不知所云。而且查询资料的时候比价少。可参考的东西太少了,学习过程,对小白有一丢丢阻碍。 不过好在大部分语法还是使用的sql,使用过程中只需要学习TDengine的特色即可。比如超级表,但是超级表还是要结合TAG来用比较好。。。 用于记录学习经过,碰到的问题。 目前碰到需求,需要实现对某几张表的某几个字段进行查询。使用如果使用超级表,默认是直接查询所有的子表数据,显然不符合需求。后来知道了,需要用到TDengine的TAG。 说明: TAGS列总长度不能超过512 bytes; TAGS列的数据类型不能是timestamp和nchar类型; TAGS列名不能与其他列名相同; TAGS列名不能为预留关键字。
1、为超级表新建一个TAG,我的需求是用TAG指定表名。 这是为超级表建TAG的语句
ALTER TABLE <stable_name> ADD TAG <new_tag_name> <TYPE>
复制代码
在这里吐槽一下(当然也可能是自己理解能力问题)上面语句我理解是这样写的:
ALTER TABLE s_01020110 add tag tables_name binary;
复制代码
回车之后:
DB error: invalid SQL: invalid binary/nchar tag length
复制代码
一眼看去,是没有指定长度的意思,于是指定长度:
ALTER TABLE s_01020110 add tag tables_name BINARY 40;
复制代码
回车之后:
DB error: syntax error near "40;"
复制代码
查看文档,也没有具体的demo,网上各种查,也没查到别人写的demo,后尝试了另外一种写法:
ALTER TABLE s_01020110 add tag tables_name BINARY(40);
复制代码
这个时候回车发现成功了。。。。 这个时候查看超级表的描述;
describe s_01020110;
复制代码
看到已经创建好了 2、删除超级表的TAG
ALTER TABLE <stable_name> DROP TAG <tag_name>
复制代码
这个没有遇到问题; 3、为超级表下的子表创建TAG; 上面步创建好了TAG字段名字,看一下这个TAG的内容;
select tables_name from s_01020110;
复制代码
发现都是null,下面开始 修改子表标签值,官方文档是:
ALTER TABLE tb_name SET TAG tag_name=new_tag_value;
复制代码
我的需求是,利用TAG区分要查询的表,所以我就把TAG设置成子表的表名字;
ALTER TABLE t_0102011001 SET TAG tables_name='t_0102011001';
复制代码
我的超级表下有4张子表,所以针对每张子表进行设置(此阶段处于开发sql模板阶段,所以我是测试使用)。 如果以后上生产了,可能一个超级表下很多子表,不可能每张表单独再设置一遍。所以在创建超级表的时候就要定好规范参考如下: 定义STable表结构并使用它创建子表 创建STable语句如下:
CREATE TABLE thermometer (ts timestamp, degree double)
TAGS(location binary(20), type int)
复制代码
这里定义了一个超级表,表名为:thermometer,字段是:(s timestamp, degree double)TAGS(location,type)分别为binary(20)和int 类型; 这样定义了超级表之后,以后创建子表的时候就要按照规定创建好指定TAGS如下: 假设有北京,天津和上海三个地区的采集器共4个,温度采集器有3种类型,我们就可以对每个采集器建表如下:
CREATE TABLE therm1 USING thermometer TAGS (’beijing’, 1);
CREATE TABLE therm2 USING thermometer TAGS (’beijing’, 2);
CREATE TABLE therm3 USING thermometer TAGS (’tianjin’, 1);
CREATE TABLE therm4 USING thermometer TAGS (’shanghai’, 3);
复制代码
TAG如果创建好了之后,我来查询超级表下每个表里面有多少条记录;
select count(*) from s_01020110 group by tables_name;
复制代码
暂时记录到这里。。。
相关文章