最近,我遇到了Rapidly Changing Dimensions
(迷你尺寸)的概念。
我了解从主维度表中删除快速变化的属性并将其放入junk dimension
(具有这些属性中值的所有可能组合的部分。这个垃圾维度将通过中间“ bridge-table
”连接到父维度表( mini 维度),它将包含父维度键和垃圾维度surrogate key
(以及开始和结束日期)。
但是,我无法理解它是如何在现实生活中实现的。
那么,假设一个 RCD 属性发生了变化,那么迷你维度(或父维度)中的记录是否会使用来自 junk dim 的新 SK 进行更新?如果是,那么我们如何在这种情况下跟踪历史,因为我们正在破坏性地更新存在于迷你维度值中的相同记录?
或者,如果在包含新 junk dim 记录的 sk 的迷你维度(如 SCD-2)中创建“新”记录,那么我们再次遇到迷你维度大小随时间增加的相同问题。此外,事实是只保留父 dim 的 ik 还是同时保留父 dim 和 junk dim sks 的 ik?
任何人都可以用一个例子澄清一下吗?
假设 DW 模型中有 4 个表:
1. PAT_DIM 是父维度
2. PAT_JNK_DIM 是包含 RCD 属性的垃圾维度
3. PAT_MINI_DIM 是 1 和 2 之间的 mini-dim 桥表(上图)。
PAT_DIM:
--------
pat_dim_sk,
pat_id,
pat_dob,
blood_type
PAT_MINI_DIM:
------------
pat_id,
pat_rcd_sk,
start_date,
end_date
PAT_JNK_DIM:
----------
pat_rcd_sk,
pat_weight,
pat_bmi
鉴于上述示例,任何人都可以帮助我了解如何在现实世界场景中建模快速变化的维度 (RCD)。数据仓库中的 RCD 表是如何相互连接的。