暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数仓建模:什么是全量表,增量表,快照表,拉链表,流水?

会飞的一十六 2024-12-13
45

1. 全量表
全量表顾名思义就是存储了全部数据的表,全量表是没有分区的,所有数据都存储在一个分区中。
例如,2019年1月1日的全量表如下所示。
2019年1月2日的全量表如下所示。
如上所示,uid=100的用户在2019年1月1日的状态是未通过,而在2019年1月2日的时候通过了,所以在2019年1月2日的时候状态就变成了通过,且此时已经没有了未通过那条记录,因为全量表存储的都是截至目前最新状态的全部记录。
2. 增量表

增量表是相对全量表而言的,就是每次把新增的数据追加到原表中,增量表中每次新增的数据单独存储在一个分区中。
如上所示,uid=102的用户是2019年1月2日新增加进来的,所以存储在2019年1月2日的分区中,而uid=100的用户是2019年1月1日进来的,所以存储在2019年1月1日的分区中,且历史分区中的数据是不发生改变的,所以状态依然是未通过。 
3. 快照表
快照表就是截至过去某个时间点的所有数据,关注更多的是过去某个时间点的状态,即快照表主要是存储历史状态的表。每次快照的数据单独存储在一个分区中。
如上所示,在2019年1月1日的时候,只有uid=100和uid=101两个用户,所以这一天的快照表就只存储了这两个用户;截至2019年1月2日,已经有uid=100、uid=101、uid=102三个用户了,所以一天的快照表存储了这三个用户,且这一天uid=100的用户的状态是通过。 
 4. 拉链表
拉链表存储了某个主体的一整套连续动作的信息。与快照表类似,但拉链表存储的是在快照表的基础上去除了重复状态的数据。
拉链表在快照表的基础上去除了重复的uid=101的记录,因为这一条记录在不同分区下的数据是相同的。 
5. 流水表
流水表是存储了所有修改记录的表。流水表与拉链表也有些类似,不同的是拉链表可以根据拉链粒度存储数据,也就是只存储特定维度的数据变化记录;而流水表存储的是每一个修改记录。
uid=100的用户在2019年1月2日状态发生了改变,所以新增了一条记录;uid=102的用户在2019年1月2日新添加进来,也算一次改变,所以也新增了一条记录。 

往期精彩
指标体系建设:如何进行流量的拆解?
指标体系建设:如何理解指
指标体系建设:如何进行自上而下的指标拆解?

文章转载自会飞的一十六,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论