Понимание медленно меняющегося типоразмера 2

Мне трудно понять, как использовать медленно меняющийся тип измерения 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. Как бы мы справились в таблице фактов?

  • Новый идентификатор Олы не будет найден в таблице фактов.

  • поэтому, если мы добавим новую строку фактически с новым идентификатором Ola, как мы можем связать, что они являются одним и тем же сотрудником, если они идентифицированы по-разному, "первичным ключом".

  • Как бы мы ни различали, этот сотрудник не является новым сотрудником, и фактически местоположение / назначение изменилось.

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      |

Вы можете продолжить загрузку таблицы фактов с помощью "Нового" идентификатора сотрудника. В этом случае у вас будет 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.
Другие вопросы по тегам