通常有些DQL表会有外键表,当外键表的主键唯一且非外键时,那么这个表称为维表。维表只能是序表或者内表,所以如果DQL表的外键指向的表是维表,那么需要在虚表定义中将虚表加载为序表或者内表。
例如:City是Customer的维表
本小节我们将演示下,如何将City转换为序表或者内表:
在打开的元数据文件demo.glmd中,点击【增加虚表】按钮,增加一个虚表Customer:
再点击【增加虚表】按钮,增加一个虚表City:
虚表定义City中去掉Use columnar storage的勾选,勾选Load into memory,Load as下拉中使用默认In-memory table:
l Load as,设置将虚表加载到内存的方式:In-memory table或者Table。不管是内表还是序表均可设置索引、字段选择以及过滤。
勾选Create index table为序表的主键创建索引表,可加快查询速度。编辑Index length设置索引长度,省略则自动选长度。
l Index table options,设置创建索引表时的选项:
Ø Basic key is ordinal number,为序表建立序号索引;序号索引用于外键序号化,要求事实表的外键值对应维表记录的序号,使用时序号键可省略;使用该选项时将忽略Index length; 该选项不适用于序表中有时间键的情况
Ø Create tree-structured index when the basic key is serial byte type,基本键是排号键时则建立成多层树桩索引,忽略Index length。
Ø Use parallelprocessing,并行建立。
l Select field(s)列表中的字段在执行Generate table from pseudo table时将会被转换为DQL表的字段
Ø 用于为Select field(s)列表增加字段,字段来自物理表和特殊字段定义列表。
Ø 用于删除Select field(s)列表中的选出字段
Ø Primary key,用于设置字段是否为主键,缺省读取物理表主键。
l Filter condition,可在编辑框中设置过滤条件。
执行Generate table from pseudo table,将虚表转为DQL表后,City就可以被Customer定义成外键表使用了。具体步骤及查询语句参考外键查询小节。