1

最近,我遇到了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 表是如何相互连接的。

4

2 回答 2

-1

根据要求,SCD 类型 1 或类型 4 可能最适合 RCD。

但是,如果您需要将其实现为 SCD 类型 2 - 那么有两种选择加入 Fact 和此 RCD,并且它还取决于数据模型设计。

选项 1:如果在设计中您在 FACT 表中有 DIM SK,那么您需要根据 DIM 行的自然键将 DIM 连接到表以获取当前标志为真的最新 RCD。(请注意,当 RCD 发生变化时,FACT 表没有更新)。

选项 2:在您的设计中,您可以为 DIM 创建一个新密钥(持久超自然密钥/稳定密钥),并且此密钥将被带到所有未来版本的昏暗行。在 FACT 表中,您保留 DIM 的 SK 和 DIM 的 Durable 密钥。所以加入的时候可以避免Dim的self join,使用Durable Key并且Current Flag为真,获取最新的DIM行。如果您需要以前版本的 DIM 行,您可以通过 DIM SK 加入。

于 2019-09-07T12:55:47.190 回答
-1

一般来说,垃圾维度 - 由维度模型中的低基数标志和指标组成。

在您的情况下,您不需要桥接表。小维度应包含 RCD,并应直接连接到 FACT 表。

于 2019-08-26T22:11:00.230 回答