前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试篇:数仓缓慢变化维的处理方式

面试篇:数仓缓慢变化维的处理方式

作者头像
伊泽瑞尔
发布2022-06-01 08:44:58
1.2K0
发布2022-06-01 08:44:58
举报

1.原样保留

对于某些维度属性,值不会发生变化,因此可以保留初始值,此方法什么也不做。例如日期维度的大多数属性,值都不会发生变化,如月份、季度、是否节假日等属性。

2.重写

该类型和业务系统保持一致,直接update,将维度属性修改为最新值,直接覆盖原有的值,不保留历史信息。该类型总是反映最近的情况,会破坏历史情况,因此适合业务只关心最新属性值、不关心历史信息的情况。

3.增加新行

在维度表中增加新的一行,新行中采用新的属性值。此方式及其变种是处理缓慢变化维的主要技术。

4.增加新列

该方法在维度表中增加新的一列以保存原来的属性值。

5.增加微型维度

当某维表是一个大型维度表,采用方式3时,如果某些维度属性变化相对较快,这将导致维度表中的数据量增长过快,带来过多的数据冗余存储,该维表变得越来越大,导致存储压力和性能压力,严重影响对历史数据的查询、分析效率。

6.快照维度

此种方式比较暴力,每天保留全量维度属性的快照数据,自然键及日期键作为事实表的外键。此方式依托的是当前存储成本远低于计算成本,以空间换时间的理念。

7.拉链表 是方式3的变形,对于有变化频率不太高的维度属性,相较于方式6,大大降低了存储;对于变化频率很高的维度属性,不适用此方法,可考虑垂直拆分。

总结:

不止上面7种,还有三种组合方式(微型维度与方式2支架、方式2属性增加到方式3维度、双重外键并且方式2与方式3的结合)不常用。

方式2适合不关心历史信息的业务场景;

方式3最为常用,但不适合处理变化十分迅速的维度属性;

方式4不太常用,适合维度变化次数很少(如不超过两次)的场景;

在大数据时代,方式6、7比较常见。

方式6简单粗暴、易于理解和使用,但是存储成本高,造成了很大的存储空间的浪费;

方式7相对存储空间小,但是使用成本高,对于BI及其他下游使用人员来讲,不易于理解,另外该方法可以很方便的找到某一时间有效的数据(生效日期<= 选择的时间<=失效日期),但是对于某一段时间生效的数据则不太好关联,需要做技术改造。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据与知识图谱 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档