2012-11-07 5 views
5

데이터 흐름 내부에서 조회를 수행하고 일치하지 않는 행을 삽입 한 다음 다시 조회 한 다음 전체 (원본) 데이터 세트를 계속 사용할 수 있습니까?테이블에 일치하지 않는 조회 행을 삽입 한 후 프로세스를 계속 진행하려면 어떻게해야합니까?

난 당신이 얼마나/재사용 그들이 OLE DB Destination에 간 한 후에 삽입 된 행을 볼 수 없으며 내가 Multicast 다음 조합 그들 모두를 다시 조회 삽입 지점이 완료 될 때까지 기다립니다 (그리고 수 있음을 볼 수있다 -에서).

데이터 흐름 내부에서 수행 할 수없는 경우 먼저 조회 삽입을 수행하기 위해 이전 데이터 흐름 태스크에서 모든 필터링 논리를 반복해야합니까?

이것은 확실한/이미 대답 된 질문 일 수 있지만 검색 한 후에는 많이 찾을 수 없습니다.

+0

나는 이해할 수 없다. 첫 번째 쿼리의 데이터가 있고 삽입하려는 데이터도 있습니다. 왜 그것들을 결합하고 그것들을 별도로 사용하지 않는가? 삽입 데이터를 OLEDB 대상 및 공용 대상에 멀티 캐스트합니다. 원본 데이터를이 공용체로 보내고 (원하는 곳이면 어디에서나 멀티 캐스팅 할 수 있습니다.) 이제 전체 데이터 세트를 보유하게됩니다. –

+0

룩업을 다시 실행하고 정상 경로를 다시 시작할 수 있도록 삽입이 완료 될 때까지 기다릴 필요가 없습니까? – PeterX

답변

3

단일 데이터 흐름 내에서 가능하지 않습니다. 충분히 "구글"이라면 여러 가지 "솔루션"이 있습니다. 그러나 행이 데이터 흐름을 버퍼/배치로 이동하여 병렬로 처리한다는 건축 현실을 간과하는 경우가 있습니다.

그래서 이미지에는 두 개의 인접한 버퍼에 도착하는 여러 개의 "새로운"행이 있습니다. 버퍼 2가 업스트림 조회를 치기 전에 버퍼 1의 "새"행에 대한 다운 스트림 처리가 완료되었는지 확인할 방법이 없습니다. 이렇게하면 같은 키에 대한 조회 대상 테이블에 여러 개의 "새"행이 삽입됩니다.

필요한 모든 조회 삽입을 수행하는 업스트림 데이터 흐름 태스크가 있어야합니다. 조회 삽입은 빠른로드 및 테이블 잠금을 사용할 수 있고 다운 스트림 조회는 전체 캐시가 될 수 있으므로 런타임에 전체적으로보다 효율적인 솔루션이됩니다.

+0

감사합니다. 따라서 이제는 업스트림 데이터 흐름과 다운 스트림 데이터 흐름 모두에서 "조회 전에 동일한 논리를 다시 사용하는 방법"에 중점을 두어야 할 것입니다. 동일한 단계를 수행하는 재사용 가능한 패키지 일 수도 있지만 아직 그와 함께 실행 가능한 경로를 볼 수는 없습니다. – PeterX

+0

예 "재사용 논리"는 좋지만 사실적입니다. 이것이 SSIS입니다. 아마도 SQL 코드를 Variables로 옮기고 Lookup을 Lookup Caches를 만드는 선행 Data Flow Task로 옮길 수는 있지만 재사용 할 수 있습니다. –