数仓之拉链表实现原理

拉链表是一种在数据仓库中用于记录数据状态变化的技术,它通过保存每个记录的状态开始和结束时间来节省存储空间。当数据发生少量变化时,拉链表能反映这些变化。制作拉链表涉及将变化数据与原表合并,通过更新状态结束时间来跟踪记录的生命周期。这种方法适用于数据大部分不变但需保留历史状态的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、拉链表是什么?

数仓建立过程中,在有些情况下,为了保持历史的一些状态,需要用拉链表来做,这样做目的在可以保留所有状态的情况下可以节省空间。
拉链表,是记录每条记录的生命周期,通常记录中需要一个状态变化来展示,如果一个状态结束,那么就重新开始一条记录
所以,拉链表原始记录需要:
1.记录需要有 状态变化
2.记录需要有创建时间和操作时间
拉链表需要新增两个字段:状态开始时间和状态结束时间

二、适用范围

拉链表适用于,数据会发生变化,但是大部分是不变的(实际是以运算换取存储空间)
拉链表反应的是数据的变化

三、制作流程

1.图示形成过程

在这里插入图片描述

2.制作过程

建立拉链表
在这里插入图片描述

使用第一天的数据初始化拉链表
在这里插入图片描述
建立临时拉链表
在这里插入图片描述

把变化的数据和拉链表做一个计算和union all
在这里插入图片描述
最后再插入覆盖到拉链表即可
总结原理:
原理:
1.先把变化表数据拿出来,
2.union all (原表数据 left join 变化表,left join 右表如果有数据,那么就更新这条数据的end_date,没有就保持原数据不变)
3.把变化数据 union all (原数据 left join 变化数据) 覆盖到原表
4.下一次就又拿这个表来 left join 和 union all 下一次变化的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值