复组表生成虚表

阅读(634) 标签: ctx, 复组表, 分表,

实际使用中,有一种组表是由多个数据结构相同的组表构成的复组表。复组表存储时使用不同的分表号(比如12)+相同的组表名(比如OrderInfo)共同构成名称如下的组表:

本例中订单表1.OrderInfo.ctx2.OrderInfo.ctx构成的复组表,分表号为12,它们按照年份不同分别存储了20202021年度的订单表数据,包括销售员ID,订单编码,签单时间以及订单金额。

那怎么用复组表定义虚表呢,我们看看下面的例子:

 

第一步:加载组表文件

在打开的元数据文件demo.glmd中,点击增加虚表按钮,增加一个虚表

点击Select打开pseudo文件夹中的任意一个分表,比如1.OrderInfo.ctx

此时Pseudo table name自动读取文件名。Select field(s)列出组表的字段和主键信息。

 

虚表名带点号,为了避免查询时出现歧义,我们将虚表名修改为OrderInfo

l  Pseudo table name,用于设置虚表名,选择文件后,系统自动识别文件名作为虚表名,用户可自定义。

 

CTX file路径改为相对路径,并使用去除分表号的文件名作为复组表文件名:

l  CTX file,用于设置虚表对应的物理表,仅支持组表文件。

文件路径可用相对路径和绝对路径。使用相对路径时,相对于Tool-Options-Esproc options中的Main path

 

第二步:设置分区号列表

将物理表1.OrderInfo.ctx2.OrderInfo.ctx分表号12填写到Zone,即分区号列表

点击Edit设置分区号列表

 

点击OK后,分区号列表如下图:

l  Use columnar storage,设置是否使用列式存储。使用列式存储可提性能。缺省已勾选。

 

第三步:编辑分列计算式

设置复组表文件的Zone expressionOTime

l  Zone expression分列计算式仅对复组表有效。用于为虚表设置date字段,便于筛选数据

在复组表中,数据会分别存储到各分表中,而存储的依据往往是根据某个时间类型的字段,各个分表分别存储某个时间段的数据,这样的时间字段称为分列计算式。比如本例的两个分表中OTime是日期时间型,该列的数据分别是20202021年的,此时OTime就是分列计算式

date字段数据类型一般为日期、时间或者日期时间型,可以使用计算式转换成其他时间类型,以提高查询性能

date字段要求在使用多个文件时,对各个文件有序,但并不要求在单个数据文件中有序,在建立虚表时会记录每个文件的date字段区间,查询或者过滤时自动定位到所需文件中处理。比如本例的两个分表虽然是按照年份划分的,但每个分表的OTime字段并不要求有序。

 

DQL查询结果如下: