阅读 698

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;复制代码

image.png看到已经创建好了 2、删除超级表的TAG

ALTER TABLE <stable_name> DROP TAG <tag_name>复制代码

这个没有遇到问题; 3、为超级表下的子表创建TAG; 上面第一步创建好了TAG字段名字,看一下这个TAG的内容;

select tables_name from s_01020110;复制代码

image.png发现都是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;复制代码

image.png暂时记录到这里。。。


作者:搬砖之星
链接:https://juejin.cn/post/7023666584237375501

文章分类
后端
文章标签
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐