涛思新出的版本提供虚拟表功能,完美解决了多值窄表查询时需要写程序把窄表变成宽表的处理过程,更加优雅。
超级表定义如下:
bash
CREATE STABLE st01 (ts TIMESTAMP,v0 INT,v1 BIGINT,v2 FLOAT,v3 BOOL) TAGS (device VARCHAR(32),vtype VARCHAR(32));
提供多个值域,通过tags的vtype字段定义哪个字段有效,使用统一的模型支持数据写入,然后定义查询虚拟表方便查询
bash
create vtable v1 ( ts timestamp, c1 int from d1001.v0, c2 float from d1002.v2);
测试下来还是很容易的,具体过程见下面代码和执行结果。
bash
ubuntu@ubuntu:~$ taos
Welcome to the TDengine Command Line Interface, Native Client Version:3.3.6.3
Copyright (c) 2025 by TDengine, all rights reserved.
********************************* Tab Completion *************************************
* The TDengine CLI supports tab completion for a variety of items, *
* including database names, table names, function names and keywords. *
* The full list of shortcut keys is as follows: *
* [ TAB ] ...... complete the current word *
* ...... if used on a blank line, display all supported commands *
* [ Ctrl + A ] ...... move cursor to the st[A]rt of the line *
* [ Ctrl + E ] ...... move cursor to the [E]nd of the line *
* [ Ctrl + W ] ...... move cursor to the middle of the line *
* [ Ctrl + L ] ...... clear the entire screen *
* [ Ctrl + K ] ...... clear the screen after the cursor *
* [ Ctrl + U ] ...... clear the screen before the cursor *
****************************************************************************************
Server is TDengine Community Edition, ver:3.3.6.3 and will never expire.
taos> create database pascal;
Create OK, 0 row(s) affected (0.111764s)
taos> use pascal;
Database changed.
taos> CREATE STABLE st01 (ts TIMESTAMP,v0 INT,v1 BIGINT,v2 FLOAT,v3 BOOL) TAGS (device VARCHAR(32),vtype VARCHAR(32));
Create OK, 0 row(s) affected (0.002556s)
taos> INSERT INTO d1001 using st01 tags('dev01','int') (ts,v0) values(now(),1) d1002 using st01 tags('dev02','float') (ts,v2) values(now(),1.3);
Insert OK, 2 row(s) affected (0.001621s)
taos> INSERT INTO d1001 using st01 tags('dev01','int') (ts,v0) values(now(),2) d1002 using st01 tags('dev02','float') (ts,v2) values(now(),2.2);
Insert OK, 2 row(s) affected (0.000726s)
taos> INSERT INTO d1001 using st01 tags('dev01','int') (ts,v0) values(now(),3) d1002 using st01 tags('dev02','float') (ts,v2) values(now(),3.3);
Insert OK, 2 row(s) affected (0.000654s)
taos> create vtable v1 ( ts timestamp, c1 int from d1001.v0, c2 float from d1002.v2);
Create OK, 0 row(s) affected (0.000869s)
taos> select * from v1;
ts | c1 | c2 |
===============================================================
2025-04-16 15:14:59.910 | 1 | 1.3 |
2025-04-16 15:15:10.668 | 2 | 2.2 |
2025-04-16 15:15:21.268 | 3 | 3.3 |
Query OK, 3 row(s) in set (0.002706s)
多值窄表模型存储测试,参考之前验证结果:TDengine不同数据模型下的存储对比验证_tdengine检查表是否存在-CSDN博客