数仓开发增量数据到全量表一般来说有两种方法
-
通过扫描增量表的全部分区进行全量的产出
-
通过自依赖上一个周期的数据和增量表的数据Union产出
- 扫描上游增量表最新的1-3个分区(防止数据漂移)
- 扫描产出目标表的上一个周期的仅增量表中有的字段
- Union ALL 再 group by 去重
- 关联所需要的维度
说明:方法二的坑是Union的字段只能是增量表中的字段 不能直接把目标表的上一个分区全部字段拿过来union
例如:增量表如果只有page_id 字段page_name需要从维表里面拿的话,page_name
下面是维表的每个分区的记录
日期 | 字段名 | 字段值 | 字段名 | 字段值 |
---|
20240101 | page_id | 1 | page_name | 1 |
20240102 | page_id | 1 | page_name | 2 |
20240103 | page_id | 1 | page_name | 3 |
20240104 | page_id | 1 | page_name | 4 |
20240105 | page_id | 1 | page_name | 5 |
如果从20240101开始直接拿目标表上一个分区的全部信息和 (增量表最新的分区数据关联维度) union 会发现
后面全部分区的page_id = 1 的数据 page_name = 1
下面是目标表的数据记录
日期 | 字段名 | 字段值 | 字段名 | 字段值 |
---|
20240101 | page_id | 1 | page_name | 1 |
20240102 | page_id | 1 | page_name | 1 |
20240103 | page_id | 1 | page_name | 1 |
20240104 | page_id | 1 | page_name | 1 |
20240105 | page_id | 1 | page_name | 1 |