【发布时间】:2019-08-23 18:51:59
【问题描述】:
最近,我遇到了Rapidly Changing Dimensions 的概念(迷你尺寸)。
我了解快速变化的属性从主维度表中删除并放入junk dimension 的部分(这些属性中值的所有可能组合。这个垃圾维度将连接到父维度表通过一个中间“bridge-table”(迷你维度),它将包含父维度键和垃圾维度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 表是如何相互连接的。
【问题讨论】:
-
就个人而言,如果合适的话,我认为将属性放入事实中没有问题。不要仅仅因为您认为属性应该在一个维度中而不是在一个事实中,就被抓住构建一个实际上与一个维度是一对一的事实。不用考虑太多 - 为什么维度不能像其他维度一样直接连接到事实?
标签: data-modeling data-warehouse business-intelligence fact datamart