请解释数据仓库中的缓慢变化维度类型 3(SCD Type 3)是如何实现版本控制的,并说明其适用场景。
考察说明
考查对缓慢变化维度类型 3 机制的理解,包括其版本控制方式和适用条件。
回答思路
- 【回答框架 1】缓慢变化维度类型 3(SCD Type 3)用于记录有限的历史信息,它通过在维度表中增加一列来存储原始值,例如 original_value 列,以保留当前值的前一版本。当属性发生变化时,将该属性的当前值移至历史列,将新值存储在当前列。
- 【回答框架 2】类型 3 只保留当前值和上一次变化值,因此只能支持有限版本控制,适合需要跟踪属性上一个值的场景,如商品的原价和现价。它无法记录更多历史版本,因为只存储一个历史值,当再次变化时会覆盖之前的历史值。
- 【回答框架 3】传统类型 2 是每条记录存多条历史版本,而类型 3 是在一行中维护多个字段,通常包括当前值、历史值以及生效时间字段,但时间字段可选。相比类型 2,类型 3 的查询更简单,因为无需展开多条记录,但代价是历史深度受限。
- 【关键点 1】SCD Type 3 通过增加原始值列来保存上一个版本的值。
- 【关键点 2】它只能保存一个历史版本,适用于仅需跟踪最近一次变化的场景。
- 【关键点 3】实现方式多为ALTER TABLE增加字段,并在更新时将当前值复制到历史字段。
- 【关键点 4】与SCD类型2相比,类型3不支持完整历史,但查询效率更高,存储开销更小。
- 【易错点 1】误以为类型3可以保存完整历史,实际上它只保留最后一个历史值,一旦再次更新,旧历史将被覆盖。
- 【易错点 2】仅使用类型3就无法应对需要审计所有历史变更需求的场景。
- 【易错点 3】在应用类型3时,如果业务对历史版本要求严格,可能导致数据缺失,需要结合其他类型或扩展字段定义。