了解渐变维度类型 2
Posted
技术标签:
【中文标题】了解渐变维度类型 2【英文标题】:Understanding Slowly Changing Dimension Type 2 【发布时间】:2016-10-21 08:26:16 【问题描述】:在我的场景中,我很难理解如何使用渐变维度类型 2。 我浏览了不同的教程网站,但它们不适合。
我有一个员工维度表,其中包含:
+-----+---------------+------------+------------+
| id | employee | designation| Location |
+-----+---------------+------------+------------+
| 1 | Ola | CEO | Newyork |
| 2 | Ahmed | DEVELOPER | California |
| 3 | Ola | Manager | California |
+----------+----------+------------+------------+
我有一个帐户事实表
+-------+----------+
|emp_id | Amount |
+-------+-----------
| 1 | 2000000 |
| 2 | 300000 |
+----------+-------+
现在我们看到维度发生了变化,因此为同一 Ola 员工提供了一个新 ID。 我们将如何在事实表中进行管理?
Ola 的新 ID 不会在 Fact Table 中找到。
因此,如果我们实际上添加了一个新行,新 ID 为 Ola,当他们以不同的方式标识时,我们如何将他们关联为同一员工,“主键”。
我们如何区分该员工不是新员工,实际上位置/名称已更改。
【问题讨论】:
我发现这非常有帮助:datawarehouse4u.info/SCD-Slowly-Changing-Dimensions.html 尤其是描述 SCD 2 数据模型的部分。这也回答了区分部分。在事实表中,缺少一个日期来描述奥拉 5 月在纽约,但在 6 月他到达了加利福尼亚。也许您必须添加雪花表来描述独特的员工。 【参考方案1】:我相信有很多方法可以做到这一点,这里有一种方法 - 在您的维度表中有一个“employee_Key”,这对于员工来说是唯一的。所以你的维度表看起来像这样 -
id | emp_key | employee | designation| Location |Valid From| Valid To |
-----|---------|------------|------------|------------|----------|----------|
1 | EMP1 | Ola | CEO | Newyork |1/1/1900 |1/1/2016 |
2 | EMP2 | Ahmed | DEVELOPER | California |1/1/1900 |NULL |
3 | EMP1 | Ola | Manager | California |1/2/2016 |NULL |
您可以继续使用员工的“新”ID 加载事实表。在这种情况下,您将拥有该员工的 2 组不同的密钥。
+-------+----------+
|emp_id | Amount |
| 1 | 2000000 |
| 2 | 300000 |
| 3 | 100000 |
+----------+-------+
如果您想从一开始就为员工汇总(例如金额总和),您可以使用 ID 键和按 emp_key 分组来加入事实和维度。 所以,
select emp_key, sum(amount) from employee dim, account fact where dim.ID = fact.ID group by emp_key.
如果您想知道他成为经理后的金额,您只需在 ID 字段上进行汇总即可。
select dim.ID, sum(amount) from employee dim, account fact where dim.ID = fact.ID group by dim.ID.
或者这样 -
select fact.ID, sum(amount) from account fact group by fact.ID.
【讨论】:
谢谢。如果我为这种变化的属性取一个垃圾维度,那不是更好吗?你会推荐什么方法?以上是关于了解渐变维度类型 2的主要内容,如果未能解决你的问题,请参考以下文章