2016-10-28 9 views
0

저는 ETL 처리의 초보자입니다. ETL을 통해 데이터 마트를 채우려 고 노력 중이며 충돌이 발생했습니다. 4 개의 ETL 태스크 (각 태스크가 마트의 특정 테이블을 채우고 있음)가 있는데, 문제는 외래 키 제약 조건과 같은 제약 조건 위반을 피하기 위해 특정 순서로 수행해야한다는 것입니다. 이것을 어떻게 할 수 있습니까? 어떤 도움이라도 대단히 감사합니다. This is a snap of my current ETLSQL Server 데이터 도구 (Integration Services)에서 ETL 작업을 주문하는 방법?

답변

1

당신이 제어 흐름에 채우는있는 각 테이블에 대해 별도의 데이터 흐름 작업을 만든 다음 단순히 당신이 그들을 필요로 순서대로 그들을 함께 연결 :

내 현재 ETL의 간단합니다 현재 데이터 흐름의 구성 요소를 작성한 새로운 데이터 흐름으로 복사/붙여 넣기 만하면됩니다.

제어 흐름에서 작업 간의 연결을 우수 제한 조건이라고하며 두 번 클릭하면 ETL 패키지의 흐름을 제어하는 ​​방법에 대한 여러 가지 옵션이 제공됩니다. 지금은 기본값으로 두는 것이 좋습니다. 이는 각 데이터 흐름 태스크가 이전 데이터 흐름 태스크가 성공적으로 완료 될 때까지 대기한다는 것을 의미합니다. 하나가 실패하면 다음 패키지가 시작되지 않고 패키지가 실패합니다.

일부 테이블을 병렬로로드하려고하지만 나중에 테이블이 모두 완료 될 때까지 대기하려면 시퀀스 컨테이너를 추가하고 병렬로로드해야하는 테이블을 넣는 것이 좋습니다. 그런 다음 Sequence Container에서 다음 Data Flow Tasks 또는 심지어 하나의 Sequence Container에서 다른 Sequence Container로 연결하십시오. 예를 들어 모든 차원로드 프로세스를 포함하는 하나의 시퀀스 컨테이너와 모든 팩로드 프로세스를 포함하는 다른 시퀀스 컨테이너가 필요할 수 있습니다.

공통 패턴은 별도의 데이터 흐름 태스크를 사용하는 것보다 한걸음 더 나아갑니다. 채우는 모든 테이블에 대해 별도의 패키지를 만드는 경우 부모 패키지를 만들고 패키지 실행 태스크를 사용하여 각 하위 패키지를 올바른 순서로 호출 할 수 있습니다. 재사용 성이 뛰어나 필요에 따라 단일 테이블을 수동으로 쉽게 채울 수 있습니다. 하나의 테이블을 테스트 할 때 일부 작업을 계속 비활성화하거나 전체로드를 다시 실행할 필요가 없으므로 테스트 할 때도 좋습니다. 나는이 패턴을 일찍 채택하여 나중에 할 일이 많이 없도록 제안합니다.

+1

정말 간단합니다! 고마워요! –