一个事实表通常会对应多个维表,将维度属性集中存储于维表,可避免事实表重复冗余存储大量描述性字段,在优化存储效率的同时,依托标准化的维表关联结构与索引优化,进一步提升多维度查询的性能表现。
在ETL中,对于已存在的维表可以直接通过外键字段关联,比如上面的源表EMPLOYEE可以通过外键字段DEPT与维表department进行关联,若是源表中的枚举字段不存在对应的维表,那么可以通过序号化枚举列功能为源表创建维表,维表在ETL中也可以称为序号化表,通过序号化枚举列将源表字段中文本形式的枚举值转换为有序的数值标识,从而达到优化存储效率和查询性能的效果。
以EMPLOYEE数据源中的枚举字段GENDER为例,GENDER字段值为F或M,下面介绍如何通过序号化枚举列生成序号化表:
选择EMPLOYEE数据源,点击序号化枚举列按钮,配置如下:
名称:设置序号化表的名称为EMPLOYEE_GENDER;
导出目录:通过序号化枚举列生成的序号化表在执行导出操作时会生成同名的BTX文件,此处选择的导出目录为ETL数据目录;
序号列名称:gender_id,设置序号化表中的序号列名,非必填项,缺省将记录号作为序号参与计算;
值列名称:gender,该列中的字段值即源表中的枚举列去重后的字段值;
选择枚举列:选择对应源表中的枚举列字段,可多选,双击左侧源表字段名时自动写入源表名称_字段名称格式的枚举列。
点击确定后,生成序号化表EMPLOYEE_GENDER:
表中gender_id列值为从1开始连续整数的序号即[1,2],gender的值为[F,M]。