2016-07-19 5 views
0

저는 현재 관계형 데이터베이스의 기존 히스토리 데이터로부터 a type 2 SCD을 개발하는 임무를 수행중인 ETL 개발자입니다. 나는 데이터에 대한 미래의 변화를 추적하는 타입 2 SCD를 완벽하게 만들 수 있지만, 당면의 과제에 관해서는 완전히 쓸모가 없다.Oracle 11g - 관계형 모델의 기존 히스토리 데이터를 기반으로 Type 2 SCD 빌드

관계형 모델은 ODS에 있습니다. 그 관계형 모델을 기반으로 DW 차원에서 평면 레코드를 작성해야합니다. 관계형 모델의 특정 관련 테이블 각각에 대해 변경 사항을 모니터링해야하는 여러 속성이 있습니다. 과거의 변경 사항은 매일 유지해야하며 동일한 속성에 대한 여러 변경 사항이 같은 날에 발생하면 마지막으로 남아있는 항목 만 변경됩니다.

어떻게 해결할 수 있습니까? 나는 길을 잃었다. 미리 감사드립니다.

P. 우리는 20-30 백만 행의 테이블과 주어진 시간에 변경 될 수있는 여러 속성을 이야기하므로 SCD에서 새로운 레코드를 생성해야합니다.

+0

ETL SCD ODS DW WTF TLA? – MT0

+0

ETL - 추출/변환 /로드 SCD - 느리게 변경되는 치수 ODS - 운영 데이터 저장소 DW - 데이터웨어 하우스 –

+0

변경 사항 자체를 추적하지 않는 소스 테이블의 변경 사항을 추적하는 데 종종 SCD 2가 필요합니다. . 변경 사항이 추적되는 소스가 있지만 현재 SCD2에서 모델링해야한다고 말하고 있습니까? 어떤 종류의 알고리즘이라도 소스 데이터가 어떤 모양인지 알 필요가 있습니다. –

답변

1

이것은 실제로 고통 스러울 것입니다. 나는 당신의 질문에서 속성 값을 포함하는 테이블이 현재 독립적으로 변하고 있다고 가정하고있다 (또는 질문 할 필요가 없다).

'Key', 'Attribute1'및 'Effective From', 'Effective To'열이 포함 된 'Table1'테이블이있는 경우 해당 테이블을 'Key'형식의 가상 테이블로 '분해'할 수 있습니다. , 'Attribute1', 'Date', 속성이 현재 존재하는 모든 날짜에 대해 한 행을 투영합니다.

(로이 작업을 수행 할 수 없습니다 당신은 아마 가하는 주의점이되기 때문에, 날짜 치수에 가입 원거리 Triangular Join (즉, 정말 심하게 수행), 당신은 아마 ETL의 행을 폭발 필요 도구/프로그램 방식으로)

여러 프로세스에서이 프로세스를 수행하면 원하는 각 요일에 대한 각 특성의 전체 일일 스냅 샷을 제공하는 테이블 집합을 갖게됩니다. 그런 다음 'FK'및 '날짜'를 기반으로 테이블을 결합하면 모든 속성 값에 대해 완벽한 일별 스냅 샷을 제공 할 수 있습니다.

물론, 동일한 키, 인접한 날짜 및 모든 동일한 속성 값을 가진 행을 축소하기 위해 다른 프로세스를 실행해야합니다. 즉 행을 'unexplode'하여 'effective from', 'effective'로 다시 되돌려 야합니다. 형성. 이것은 기본적으로 행 단위 (row-by-row) 연산 (또는 적어도 윈도우 잉 함수)이며, 집합 기반 접근법은 매우 나쁘게 수행됩니다. 개인적으로 나는 그것을 전부 스트리밍 하겠지만 .net/java 코드는 이것을 달성한다.

데이터 볼륨이 주어지면 시간이 걸릴 수 있지만 달성 가능해야합니다.