一文详解如何理解数据仓库缓慢变化维!

阅读人数:105预计阅读时长:3 min

数据仓库的维度表中,缓慢变化维是指那些随着时间推移,数据变更频率相对较低、变化周期不固定的维度属性。它们记录并保存过去对数据的更改。SCD在保持最新记录以供当前和未来使用的分析、报告和决策方面发挥着重要作用。它们有助于监控维度属性的变化,并保证在业务实体发生变化时数据质量的可维护性。
缓慢变化维的特点:

  • 数据变化缓慢:缓慢变化维的数据不是频繁更新的。它受业务操作影响的频率较低
  • 对数据一致性和准确性要求高:跨时间数据关联:由于数据会随时间变化,需要保证在不同时间点获取的数据在逻辑上是一致的;数据溯源准确性:当需要追溯数据的历史状态时,数据的准确性至关重要
  • 与业务决策紧密相关:支持长期策略分析,缓慢变化维的数据能够为企业的长期战略决策提供支持;
  • 存储和管理复杂:多种处理方式并存,有多种处理缓慢变化维的方式(type0、type1等)每种方式都有其适用场景和复杂性。

缓慢变化维的类型

1、Type 0(保留原始值)

Type 0是最简单的处理方式,当维度数据发生变化时,维度表中的数据保持不变,始终保留最初插入的值。例如,在一个产品维度表中,产品的初始类别被记录后,无论该产品在业务系统中的类别如何变化,在数据仓库的这个维度表中类别信息都不会更新。

Type 0适用于那些历史数据具有权威性,不允许修改,且变化信息对分析不重要的维度。比如在记录法律法规条文的维度表中,条文编号和初始发布内容一旦确定就不能改变,即使条文在后续有修订,原始记录仍要保留用于追溯最初的法律状态。

  • 优点:实现简单,数据仓库中的维度数据非常稳定,不会因为数据变化而产生混乱。同时,存储成本不会因为数据更新而增加。
  • 缺点:数据可能与实际业务中的最新状态脱节,对于需要依据最新维度信息进行分析的场景不适用。

2、Type 1(覆盖)

Type 1是当维度数据发生变化时,直接用新的值覆盖旧的值。例如,在客户维度表中,客户的联系电话发生变化,新的电话信息直接替换原来的记录。
这种类型适用于那些不需要保留历史维度变化记录,只关注当前最新状态的场景。比如在一个电商促销活动的数据仓库中,活动产品的价格会频繁波动,每次价格变化直接更新价格字段,因为分析主要关注当前的促销价格,历史价格对促销效果分析没有太大帮助。

  • 优点:处理方式简单直接,易于理解和实现。在维度数据更新后,查询最新状态的效率较高,因为不需要考虑历史版本。同时,由于不需要存储历史数据,存储成本相对较低。
  • 缺点:丢失了维度数据的历史变化信息,无法追溯维度数据是如何演变的。这对于需要进行历史数据分析或者审计的场景是一个很大的局限。
数据仓库缓慢变化维type1

3、Type 2(添加新行)

Type 2 指当维度数据发生变化时,在维度表中插入一行新的数据来记录变化后的信息,并且会有相应的机制(如有效日期、版本号等)来区分不同版本的数据。例如,在员工维度表中,员工职位晋升后,插入新行记录新职位以及晋升日期,同时旧职位记录依然保留,通过有效日期字段可以判断每个职位记录的有效时间段。
Type 2 广泛应用于需要完整记录维度数据变化历史的场景。比如在金融数据仓库中,客户的信用评级、账户状态等信息的变化需要详细记录,以便后续进行风险评估、合规审计等操作时能够追溯客户状态在各个时期的变化情况。

  • 优点:能够完整地保留维度数据的变化历史,为数据分析提供了丰富的素材,可以满足复杂的历史数据分析、数据溯源和审计需求。
  • 缺点:随着时间的推移和数据的不断变化,维度表的规模会不断扩大,导致存储成本增加。同时,数据量的增大可能会影响查询性能,因为在查询时可能需要筛选多个版本的数据来获取特定时期的信息。
数据仓库缓慢变化维type2

4、Type 3(添加新列)

Type 3 指当维度数据发生变化时,在维度表中添加新的列来记录变化后的信息。例如,在产品维度表中,有一个 “原始价格” 列,当产品价格发生变化时,添加 “新价格” 列来记录新价格,还可以添加 “价格变化日期” 列来记录变化时间。
Type 3 适用于需要记录一定次数的维度变化,并且主要关注当前和最近一次变化情况的场景。比如在一个企业资源规划(ERP)系统的数据仓库中,对于原材料成本的记录,可能只需要记录当前成本和最近一次成本变化情况,以便快速比较成本波动。

  • 优点:在一定程度上可以保留维度数据的变化历史,同时对于查询当前和最近一次变化比较方便。相比 Type 2,不会使行数据过多增加,对存储成本和查询性能的影响相对较小。
  • 缺点:如果维度数据变化频繁,会导致维度表的列数不断增加,使表结构变得复杂。而且这种方式不能很好地处理多次以上的变化情况,当需要记录更多变化历史时会受到限制。
数据仓库缓慢变化维type3

5、Type 4(历史表和当前表分离)

Type 4 是将维度表分为历史表当前表。当前表存储维度数据的最新状态,历史表用于存储维度数据变化的历史记录。当维度数据发生变化时,更新当前表中的数据,同时将旧数据以及变化相关的信息(如变化时间、变化原因等)插入到历史表中。

以供应商维度为例,在当前供应商表中存储供应商的最新联系信息、产品供应范围等信息。当供应商的某些信息发生变化,如联系方式改变,将新的联系方式更新到当前供应商表,同时把旧的联系方式、变化时间等信息插入到供应商历史表中。
Type 4 适用于对当前数据和历史数据的查询频率都较高,且希望对两者进行明确区分以方便管理和查询的场景。例如,在大型零售企业的数据仓库中,对于供应商维度,采购部门经常需要查询当前供应商的最新信息来进行采购决策,而审计部门则更关注供应商信息的历史变化情况,通过这种方式可以更好地满足双方的需求。

数据仓库缓慢变化维type4


优点:

  • 清晰地分离了当前数据和历史数据,使得对两种数据的管理和查询都更加高效。对于只关心当前维度状态的操作(如实时业务处理)可以直接在当前表中进行,而历史数据分析则在历史表中进行,互不干扰。
  • 可以灵活地设计历史表的结构,以更好地存储和查询历史数据变化的细节,比如添加更多的元数据(如变化原因、操作人等)来丰富历史记录。


缺点:

  • 需要维护两个表,增加了数据仓库架构的复杂性和维护成本。包括数据的插入、更新操作需要同时涉及两个表,容易出现数据不一致的情况。
  • 在进行一些跨越当前和历史数据的复杂查询时,可能需要关联两个表,这会增加查询的复杂性和时间成本



FineDataLink作为数据仓库ETL工具,内置了强大的ETL调度器和引擎,可以快速地从不同来源的数据源中抽取、转换和加载数据,大大缩短了数据处理的时间。同时提供了可视化界面和预定义模板,使得用户可以快速地配置和管理ETL流程,并且提供详细的日志和报告信息。

FDL-集成

帆软软件深耕数字行业,能够基于强大的底层数据仓库与数据集成技术,为企业梳理指标体系,建立全面、便捷、直观的经营、财务、绩效、风险和监管一体化的报表系统与数据分析平台,并为各业务部门人员及领导提供PC端、移动端等可视化大屏查看方式,有效提高工作效率与需求响应速度。

FineDataLink是一款集实时数据同步、ELT/ETL数据处理、离线/实时数据开发、数据服务和系统管理于一体的数据集成工具。更多精彩功能邀您体验,您可以访问下方链接或点击组件,试用FineDataLink,解决企业中数据从任意终端到任意终端的处理和传输问题,让流动的数据更有价值!

更多FineDataLink详情:https://www.fanruan.com/solutions/fdl

评论区

暂无评论
电话咨询图标电话咨询icon产品激活iconicon在线咨询