什么是拉链表
- 数仓设计中的一种表,记录数据的历史状态和最新状态
zip table亦可译作压缩表 - 优点:和全量表相比,可大大节省存储空间
- 应用场景:数据量大但变化量不大,且有查看历史快照的需求
拉链表制作
从拉链表取出快照
HIVE实现拉链表
1、建表
1、建库
DROP DATABASE IF EXISTS b0 CASCADE;
CREATE DATABASE b0;
USE b0;
2、新增和变化表(按天分区)
DROP TABLE IF EXISTS ods_user;
CREATE TABLE ods_user(i STRING,balance INT) PARTITIONED BY (ymd DATE);
3、拉链表
DROP TABLE IF EXISTS dwd_user;
CREATE TABLE dwd_user(i STRING,balance INT,start_date DATE,end_date DATE);
2、插入数据到 每天新增和变化表
此处为一次性插入,实际场景是每天插入
INSERT INTO ods_user (i,balance,ymd) VALUES
('a1',100,'2020-01-01'),
('a2',0,'2020-01-01'),
('a1',300