DIM层
- 1个维度表约30个字段
3个维度表约100个字段
CREATE EXTERNAL TABLE `ods_a_full` (
`id` STRING COMMENT '主键',
`name` STRING COMMENT '名称'
) COMMENT 'a信息'
PARTITIONED BY (`ymd` STRING);
CREATE EXTERNAL TABLE `ods_b_full` (
`id` STRING COMMENT '主键',
`name` STRING COMMENT '名称',
`a_id` STRING COMMENT '关联a.id'
) COMMENT 'b信息'
PARTITIONED BY (`ymd` STRING);
CREATE EXTERNAL TABLE `ods_c_full` (
`id` STRING COMMENT '主键',
`name` STRING COMMENT '名称',
`b_id` STRING COMMENT '关联b.id'
) COMMENT 'c信息'
PARTITIONED BY (`ymd` STRING);
-
若
a
一对多b
一对多c
则
c
是最细维度
则
c
左联b
左联a
-
左联后
命名取最细粒度c
前缀dim
,全量维度表后缀full
,拉链表后缀zip
则全名为dim_c_full
-
建表
1、完全复制3个表的字段,不同表要隔开,顺序cba
,c
表主键字段排在字段第一
2、不同维度表的字段名会重名(例如上面都有name
),对此,所有字段前缀加上源表名,如:c_
、b_
、a_
3、注释掉所有外键
4、添加压缩和列式存储
CREATE EXTERNAL TABLE `dim_c_full` (
-- ods_c_full
`c_id` STRING COMMENT 'c主键',
`c_name` STRING COMMENT 'c名称',
-- `c_b_id` STRING COMMENT '关联b.id'
-- ods_b_full
`b_id` STRING COMMENT 'b主键',
<