超级表定义
-
表结构即表中记录的数据列及其数据类型; 标签名和数据类型由 STable 定义,标签值记录着每个子表的静态信息,用于对子表进行分组过滤。
1CREATE TABLE <stable_name> (<field_name> TIMESTAMP, field_name1 field_type,…) TAGS(tag_name tag_type, …)
1create table thermometer (ts timestamp, degree float)
2tags (location binary(20), type int)
1CREATE TABLE <tb_name> USING <stb_name> TAGS (tag_value1,...)
沿用上面温度计的例子,使用超级表 thermometer 建立单个温度计数据表的语句如下:
1create table t1 using thermometer tags (‘beijing', 10)
超级表管理
1CREATE TABLE <stable_name> (<field_name> TIMESTAMP, field_name1 field_type,…) TAGS(tag_name tag_type, …)
TAGS 列总长度不能超过 512 bytes;
TAGS 列的数据类型不能是 timestamp 和 nchar 类型;
TAGS 列名不能与其他列名相同;
TAGS 列名不能为预留关键字。
1show stables;
1DROP TABLE <stable_name>
1SELECT TBNAME,[TAG_NAME,…] FROM <stable_name> WHERE <tag_name> <[=|=<|>=|<>] values..> ([AND|OR] …)
1SELECT COUNT(TBNAME) FROM <stable_name> WHERE <tag_name> <[=|=<|>=|<>] values..> ([AND|OR] …)
写数据时自动建子表
1INSERT INTO <tb_name> USING <stb_name> TAGS (<tag1_value>, ...) VALUES (field_value, ...) (field_value, ...) ...;
1INSERT INTO <tb1_name> USING <stb1_name> TAGS (<tag1_value1>, ...) VALUES (<field1_value1>, ...) (<field1_value2>, ...) ... <tb_name2> USING <stb_name2> TAGS(<tag1_value2>, ...) VALUES (<field1_value1>, ...) ...;
STable 的 TAG 管理
1ALTER TABLE <stable_name> ADD TAG <new_tag_name> <TYPE>
1ALTER TABLE <stable_name> DROP TAG <tag_name>
1ALTER TABLE <stable_name> CHANGE TAG <old_tag_name> <new_tag_name>
1ALTER TABLE <table_name> SET TAG <tag_name>=<new_tag_value>
STable 多表聚合
针对所有的通过 STable 创建的子表进行多表聚合查询,支持按照全部的 TAG 值进行条件过滤,并可将结果按照 TAGS 中的值进行聚合,暂不支持针对binary类型的模糊匹配过滤。
语法如下:
1SELECT function<field_name>,…
2 FROM <stable_name>
3 WHERE <tag_name> <[=|<=|>=|<>] values..> ([AND|OR] …)
4 INTERVAL (<time range>)
5 GROUP BY <tag_name>, <tag_name>…
6 ORDER BY <tag_name> <asc|desc>
7 SLIMIT <group_limit>
8 SOFFSET <group_offset>
9 LIMIT <record_limit>
10 OFFSET <record_offset>
说明:
STable 使用示例
1CREATE TABLE thermometer (ts timestamp, degree double)
2TAGS(location binary(20), type int)
1CREATE TABLE therm1 USING thermometer TAGS ('beijing', 1);
2CREATE TABLE therm2 USING thermometer TAGS ('beijing', 2);
3CREATE TABLE therm3 USING thermometer TAGS ('tianjin', 1);
4CREATE TABLE therm4 USING thermometer TAGS ('shanghai', 3);
1INSERT INTO therm1 VALUES ('2018-01-01 00:00:00.000', 20);
2INSERT INTO therm2 VALUES ('2018-01-01 00:00:00.000', 21);
3INSERT INTO therm3 VALUES ('2018-01-01 00:00:00.000', 24);
4INSERT INTO therm4 VALUES ('2018-01-01 00:00:00.000', 23);
按标签聚合查询
查询位于北京(beijing)和天津(tianjing)两个地区的温度传感器采样值的数量count(*)、平均温度avg(degree)、最高温度max(degree)、最低温度min(degree),并将结果按所处地域(location)和传感器类型(type)进行聚合。
1SELECT COUNT(*), AVG(degree), MAX(degree), MIN(degree)
2FROM thermometer
3WHERE location='beijing' or location='tianjin'
4GROUP BY location, type
按时间周期聚合查询
1SELECT COUNT(*), AVG(degree), MAX(degree), MIN(degree)
2FROM thermometer
3WHERE name<>'beijing' and ts>=now-1d
4INTERVAL(10M)
5GROUP BY location, type
关于 TDengine

本文分享自微信公众号 - TDengine(taosdata_news)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。