2010-04-29 5 views
0

FactTable에 12 개의 조회를 차원 테이블에 채워서 SK를 얻습니다.이 중 6 개는 다른 테이블과 비교되며 나머지 6 개는 동일한 DimTable (유형 II)에서 조회를 수행하는 조회입니다 동일한 자연 키로.SK 조회에 대한 Lookup/UnionAll 조회

예 :

PrimeObjectID =>에 같은

OtherObjectID1 => 조회를 수행 DimObject.ObjectID => GET ObjectSK

하고있어 다른 컬럼에 조회 DimObject.ObjectID => GET ObjectSK

OtherObjectID2 => DimObject.ObjectID => 얻기 ObjectSK

OtherObjectID3 => DimObject를 검색하십시오. OBJECTID => GET ObjectSK

갈 방법 등 여러 조회에 대한 DimObject.ObjectID => GET ObjectSK

에 DimObject.ObjectID => GET ObjectSK

OtherObjectID5 => 조회에 OtherObjectID4 => 찾아 내 SSIS 패키지.

지금은 lookup/unionall foreach 조회를 사용하고 있습니다. 이것에 대한 더 좋은 방법이 있습니까?

답변

1

오류 조회가 파생 된 열로 리다이렉트되어 실패한 조회에 대한 기본값을 설정하고 조회/파생 열 값 각각에 대해 모두 합집합을 사용하여 조회하는 것으로 가정합니다. 그 패턴은 상당히 일반적이며 디버깅을 돕기 위해 초기 단계에서 사용합니다. 그러나 유니온 모두가 부분적으로 차단하는 구성 요소이기 때문에 (즉 유니온 모두가 실행될 때 새로운 버퍼를 생성하지만 곧 들어올 때까지 데이터를 전달합니다) SSIS에서는 패키지의 전반적인 효율성이 줄어 듭니다. 데이터 흐름에 새로운 버퍼를 생성하는 오버 헤드. 일반적으로 오류를 무시하기 위해 일련의 조회를 코딩하고 마지막에는 조회 대상으로 포함 된 모든 열에 대한 기본값으로 대체되는 파생 열 구성 요소를 포함합니다. 이렇게하면 데이터 흐름을 통해 가장 효율적인 데이터 흐름이 가능합니다. 블로킹 또는 세미 블로킹을 수행하는 데이터 흐름 구성 요소에 대한 자세한 내용은 다음 게시물을 참조하십시오. http://sqlblog.com/blogs/jorg_klein/archive/2008/02/12/ssis-lookup-transformation-is-case-sensitive.aspx

0

왜 크기 당 2 개의 조회를하는지 이해가되지 않습니다.

일반적으로 모든 치수를 먼저 처리했습니다 (치수를 유추/만료시키기 위해 TableDifference 구성 요소를 사용).

사실 테이블이로드되어 대리 키를 찾기 위해 비즈니스 키를 사용하여 각 차원 (시리즈)에서 하나의 조회가 수행됩니다.

관련 문제