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
暂时记录到这里。。。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值