了解渐变维度类型 2

Understanding Slowly Changing Dimension Type 2

我很难理解如何在我的场景中使用缓慢变化的维度类型 2。 我浏览了不同的教程网站,但它们不适合。

我有一个员工维度 table 包含:

+-----+---------------+------------+------------+
| id  | employee      | designation| Location   |
+-----+---------------+------------+------------+
| 1   | Ola           |   CEO      | Newyork    |
| 2   | Ahmed         | DEVELOPER  | California |
| 3   | Ola           | Manager    | California |
+----------+----------+------------+------------+

我有一个帐户资料table

+-------+----------+
|emp_id | Amount   | 
+-------+-----------
| 1     | 2000000  |  
| 2     | 300000   | 
+----------+-------+

现在我们看到维度发生了变化,因此为同一个 Ola 员工提供了一个新 ID。 我们将如何处理 table 的事实?

我相信有很多方法可以做到这一点,这里是一种方法 - 在您的维度 Table 中有一个 "employee_Key",这对员工来说是独一无二的。所以你的尺寸 table 看起来像这样 -

 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      |

您可以使用员工的 "New" ID 继续加载事实 table。在这种情况下,您将为该员工提供 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.