2017-11-22 29 views
0

나는 표 1은 주어진 데이터를로드 한 후 내가 실행 한


no | name | loc | 
----------------- 
1 | abc | hyd | 
----------------- 
2 | def | bang | 
----------------- 
3 | ghi | chennai | 

아래 scdtype 2로드의 두 번째 실행 데이터를 작업을 실행 한 한


no | name | loc | 
----------------- 
1 | abc | hyd | 
----------------- 
2 | def | bang | 
----------------- 
3 | ghi | chennai | 
-------------------- 
1 | abc | bang | 

아래 이 situtation에 두 번째 업데이트 기록을 찾을 수있는 방법은 다음과

에는 날짜, 플래그, 실행 IDS하지

감사

+1

나는 너를 믿을 수 없다. 차원에 날짜와 플래그가 있어야합니다 (날짜부터 유효, 날짜까지 유효, iscurrent 플래그가 좋은 시작 임). – Rich

+1

기본 키 당 * 최신 * 레코드를 찾을 수 없습니다 ('아니오'). 당신이 * 할 수있는 것은 주어진 키에 대한 모든 새로운 레코드를 찾는 것이다 (간단히 'MINUS'를 사용한다). 정렬 순서를 설정하기 위해 주어진 키에 대해 둘 이상의 레코드가있는 경우 문제가 발생합니다. 그래서 당신의 인터페이스는 의문의 여지가 있습니다. –

+1

이것은 SCD2 구현이 적절하지 않기 때문에 가능하지 않습니다. 이를 다시 디자인해야합니다. – Maciejg

답변

2

난 당신이 업데이트 된 기록과 원래의 기록을 구별 할 수 있습니다 생각하지 않는다 .

유형 2 SCD를 사용하는 차원 테이블에는 이러한 이유 때문에 레코드가 유효한 기간 (또는 현재 기간)을 설명하는 추가 열이 필요합니다.

해결 방법은 차원 테이블에 이러한 열 (일반적으로 ValidFrom 및 ValidTo 날짜 또는 날짜/시간 및 경우에 따라 올바른 측정을위한 IsCurrent 플래그)이 있는지 확인하는 것입니다. 그런 다음 ETL 프로세스는 유형 2 갱신의 일부로 이들 컬럼을 채 웁니다.