2016-10-21 9 views
0

천천히 변화하는 치수 유형 2를 사용하는 방법을 이해하는 데 어려움이 있습니다. 다른 튜토리얼 웹 사이트를 방문했지만 적합하지 않습니다. 나는 따라서 계정 사실천천히 변경하는 치수 유형 이해 2

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

이제 우리는 치수가 변경된 것을 볼 테이블, 그리고에게 동일한 올라 직원에 새로운 ID를

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

:

나는 포함하는 직원 차원 테이블이 주어졌다. 사실 테이블에서 우리는 어떻게 관리합니까?

  • 사실 테이블에 Ola의 새 ID가 없습니다.

  • 실제로 Ola라는 새 ID를 사용하여 새 행을 추가하면 어떻게하면 동일한 직원인지 '기본 키'인지 다르게 식별 될 수 있습니다.

  • 우리는이 직원이 신입 사원이 아닌 것을 어떻게 구분할 것이며 실제로 위치/지정이 변경되었는지 어떻게 알 수 있습니까?

+0

나는 이것이 매우 도움이 발견 : SCD 2 http://datawarehouse4u.info/SCD-Slowly-Changing-Dimensions.html 특히 일부 경우 데이터 모델 설명하고있다. 이것은 또한 구별 부분에 응답합니다. 사실 테이블에서 5 월 Ola는 뉴욕에 있었지만 6 월에는 캘리포니아에 도착했다는 것을 설명하기위한 날짜가 빠져 있습니다. 아마도 독특한 직원을 설명하기 위해 눈송이 테이블을 추가해야 할 것입니다. – tobi6

답변

2

여기에는 여러 가지 방법이 있습니다. 직원에게 고유 한 차원 테이블에 "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로 팩트 테이블을 계속로드 할 수 있습니다. 이 경우 해당 직원에 대해 두 가지 키 세트가 있습니다. 당신이 롤업 처음부터 직원에 대한 (금액의 합계를 말한다)를 선택합니다

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

, 당신은 emp_key으로 ID 키 및 그룹을 사용하여 사실과 차원을 결합 할 것입니다. 그래서,

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. 
+0

감사합니다. 그러한 변화하는 속성에 대한 정크 치수를 취하면 더 나아지지 않을까요? 어떤 접근 방식을 권하고 싶습니까? – Miru