了解缓慢变化的尺寸类型2

时间:2016-10-21 08:26:17

标签: data-warehouse dimensional-modeling star-schema fact scd

在我的场景中,我很难理解如何使用缓慢变化的维度类型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。

  • 因此,如果我们实际添加一个新行,并使用新的ID Ola,那么当它们被识别为不同时,我们如何链接它们是同一个员工,'主键'。

  • 我们如何区分这名员工不是新员工,实际上位置/名称已经改变。

1 个答案:

答案 0 :(得分:3)

我确信有很多方法可以做到这一点,这是一种方式 - 在维度表中有一个“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.