开门见山,直接切入正题(跟着思路走~~~):
一、.什么是拉链表?
维护历史状态,以及最新状态数据的一种表,拉链表根据拉链粒度的不同,实际上相当于快照,只不过做了优化,去除了一部分不变的记录,通过拉链表可以很方便的还原出拉链时点的操作记录。(可能不是很理解,往下走~~)
二、为什么要使用拉链表?
在数据仓库中,由于源系统每日会有数据变动,比如新增、修改、删除,如果对每一条记录数据仓库都进行存储,会出现大量重复冗余数据,这样会增加不必要的存储空间,而且会使系统处理效率变低。那么,我们如果采用拉链表形式存储,对数据进行加工,对数据进行开链(start_date)和闭链(end_date),然后根据主键确定一条记录,这样既节约存储空间,又可以随时根据start_date和end_date的范围查询任何时间段的数据记录,如果数据量太大,通过这种查询方法很快就能找到我们需要查询的数据,进而得到我们想要的数据结果。(比如你想知道自己某天的账户余额是多少,想不起来吧,哈哈~~,接着往下走~~)
三、人狠话不多,实例接着说:
假如数据库中有一个user表(数据仓库表,源表),在此表中插入下列测试数据,表中信息如下(仔细看啊~~):
---12月12号,新增3条数据
insert into table ods_dev.test_wms_test partition (data_date='20191212') values(1,'test001',1201,'张三','15900000001','同事','2019-12-12 00:00:00','2019-12-12 00:00:00','张三','TEST-01','测试1','备注1','f');
insert into table ods_dev.test_wms_test partition (data_date='20191212') values(2,'test002',1202,'李四','15900000002','朋友','2019-12-12 00:00:00','2019-12-12 00:00:00','李四','TEST-02','测试2','备注2','f');
insert into table ods_dev.test_wms_test partition (data_date='20191212') values(3,'