使用UDW创建历史拉链表。
介绍
-
历史拉链表
- 历史拉链表是一种数据模型,主要针对数据仓库设计中表存储数据的方式而定义的。**它记录一个事物从开始到当前状态的所有变化的信息。**拉链表可以避免按每一天存储所有记录造成的海量存储问题,同时也是处理缓慢变化数据的一种常见方式。
- 也就是说,对于表中的任何数据,不进行真正的删除,只记录操作和有效日期。
-
流程
- 其中,
tmp0
表有两个分区,表示历史数据和当前数据,使用tmp1
对tmp0
和事实表进行更新和交换。
- 其中,
操作
创建表
-
首先需要创建delta表,事实表,以及两个tmp表
-
-- 事实表 create table public.member_fatdt0 ( member_id varchar(64), -- 会员ID phoneno varchar(20), -- 电话号码 dw_beg_date date, -- 生效日期 dw_end_date date, -- 失效日期 dtype char(1), -- 类型(历史数据,当前数据) dw_status char(1), -- 数据操作类型(I,D,U) dw_ins_date date -- 数据仓库插入日期 )with(appendonly=true,compresslevel=5) -- 压缩级别 distributed by (member_id) PARTITION BY RANGE (dw_end_date) ( PARTITION p20111201 START (date '2011-12-01') INCLUSIVE, PARTITION p20111202 START (date '2011-12-02') INCLUSIVE, PARTITION p20111203 START (date '2011-12-03') INCLUSIVE, PARTITION p20111204 START (date '2011-12-04') INCLUSIVE, PARTITION p20111205 START (date '2011-12-05') INCLUSIVE, PARTITION p20111206 START (date '2011-12-06') INCLUSIVE, PARTITION p20111207 START (date '2011-12-07') INCLUSIVE, PARTITION p20111231 START (date '2011-12-31') INCLUSIVE END (date