官方文档中关于虚拟表的部份让人摸不着头脑

1是不知道虚拟表能干啥,2是没有完整的例子介绍

咱们看到这部分描述了吗

关于虚拟超级表官方的文档是不是介绍不足,我实在是无法看懂,如何把多张超级表联合成一张虚拟超级表,还有原本超级表中的tag又如何在虚拟超级表中体现,是当列来处理吗

这张图存在的链接也发我一下吧 谢谢

我这几张超级表的tag是完全相同的,每张超级表的列是对应设备的测点,因为测点的采集频率不同,所以分成了不同的超级表。现在我遇到的问题是我在做指标计算的时候就需要跨超级表或者子表来查询不是很方便,我就想着使用虚拟超级表来聚合同一类设备的超级表,来方便我做查询使用。但是官方文档中关于虚拟超级表我实在是没看懂如何创建和使用。

虚拟超级表就是在超级表的基础上加上一个 vitrual 1 参数就可以了。

问题不在虚拟表的参数这里,是我现在根据这个文档,不知道怎么把两张超级表拼出一个完整的带tag的虚拟超级表,弄了好久都是一直报语法错误

比如我这两张表

CREATE STABLE st_simulate_modbus_100ms (
ts TIMESTAMP ENCODE ‘delta-i’ COMPRESS ‘lz4’ LEVEL ‘medium’,
A1 FLOAT ENCODE ‘delta-d’ COMPRESS ‘lz4’ LEVEL ‘medium’,
A2 FLOAT ENCODE ‘delta-d’ COMPRESS ‘lz4’ LEVEL ‘medium’,
A3 FLOAT ENCODE ‘delta-d’ COMPRESS ‘lz4’ LEVEL ‘medium’) TAGS (
plantId INT,
workshopId INT,
productionLineId INT,
processSegmentId INT,
deviceTypeId INT,
deviceId INT);
CREATE STABLE st_simulate_modbus_1s (
ts TIMESTAMP ENCODE ‘delta-i’ COMPRESS ‘lz4’ LEVEL ‘medium’,
Quantity BIGINT ENCODE ‘simple8b’ COMPRESS ‘lz4’ LEVEL ‘medium’,
A100 DOUBLE ENCODE ‘delta-d’ COMPRESS ‘lz4’ LEVEL ‘medium’) TAGS (
plantId INT,
workshopId INT,
productionLineId INT,
processSegmentId INT,
deviceTypeId INT,
deviceId INT);

我如何创建一个基于这两张超级表所有列的虚拟超级表,虚拟超级表支持根据tag查询

我只看懂了文档中关于虚拟表和实体表之间的建立关系,完全无法理解虚拟超级表和超级表之间的建立关系。文档直说虚拟超级表就是在超级表的基础上加上一个 vitrual 1 参数就可以了。按文档说的虚拟表和实体表的描述,我只能理解为虚拟超级表可以是多个超级表的聚合视图,但是怎么聚合完全不知道怎么做。

虚拟超级表聚合的是虚拟子表。

超级表聚合的是子表。


CREATE STABLE vst_simulate_modbus_100ms_and_1s (
ts TIMESTAMP,
A1 FLOAT,
A2 FLOAT,
A3 FLOAT,
Quantity BIGINT,
A100 DOUBLE) TAGS (
plantId INT,
workshopId INT,
productionLineId INT,
processSegmentId INT,
deviceTypeId INT,
deviceId INT) virtual 1;

以上是创建虚拟超级表的语句

假如 st_simulate_modbus_100ms 超级表下有子表
ct_simulate_modbus_100ms_0 , TAG 为(0,0,0,0,0,0)

st_simulate_modbus_1s 下有子表
ct_simulate_modbus_1s_0 TAG 为(0,0,0,0,0,0)

可以在虚拟超级表下创建虚拟子表:

create vtable vct_simulate_modbus_100ms_and_1s_0 (
A1 from ct_simulate_modbus_100ms_0.A1,
A2 from ct_simulate_modbus_100ms_0.A2,
A3 from ct_simulate_modbus_100ms_0.A3,
Quantity from ct_simulate_modbus_1s_0.Quantity,
A100 from ct_simulate_modbus_1s_0.A100
) USING vst_simulate_modbus_100ms_and_1s
TAGS(0,0,0,0,0,0);