멀티캐스트, 조건부 분할 변환
멀티캐스트 및 조건부 분할 변환에 대해 살펴보기 전에, 다음의 두 경우를 먼저 생각해 보도록 하겠습니다.
1. 하나의 원본 데이터에서 읽은 데이터를 여러 대상에 저장하는 경우
예를 들어, Source라는 테이블의 데이터를 10개의 서로 다른 서버에 있는 대상 테이블에 전송하는 작업을 고려해 봅시다. SQL 에서는 원본 대 대상의 연결은
2. 원본에서 데이터를 읽어온 후, 조건에 따라 대상을 달리하는 경우
원본의 데이터에 따라 대상을 달리 해야 하는 경우도 위의 경우와 비슷합니다. 예를 들어, 회원 데이터와 같은 원본 데이터에서 남/녀 성별에 따라 서로 다른 두 테이블로 구분 짓는 경우를 고려해봅시다. 우선, 원본 데이터에서 성별이 ‘남자’인 데이터를 검색하여 저장하고, 다시 ‘여자’인 데이터를 검색하여 다른 테이블에 저장합니다. 이 경우도 역시 동일 데이터에 대해 두 번 읽어오는 작업을 수행해야 합니다. SSIS의 조건부 분할 변환을 이용할 경우, 입력 데이터에 대해 조건 별로 대상을 달리 지정하여 분기하는 작업을 수행할 수 있습니다.
멀티캐스트
멀티캐스트 변환은 입력 데이터를 그대로 여러 출력으로 내보내는 작업을 수행합니다. 데이터 가공이나 유형 변환 등의 작업은 수행하지 않으며, 단순히 데이터를 여러 출력으로 보내는 역할만 수행합니다. 하나의 원본을 지정한 후, 여러 경로로 출력을 만들 수 있으며, 오류 출력은 없습니다.
위의 그림에서와 같이, 원본 데이터의 모든 데이터를 대상 1, 대상 2, 대상 3으로 모두 동일하게 보내게 됩니다.
조건부 분할
멀티캐스트 변환과는 달리 입력되는 데이터에 대해 조건에 따라 서로 다른 출력 경로로 데이터를 구분해서 내보내는 변환입니다.
위의 경우, 입력되는 데이터 중, seq열의 값이 3보다 작은 경우 [사례 1]이라는 출력 명으로 출력되며, 4에서 6 사이인 경우에는 [사례 2]라는 출력으로 데이터가 출력됩니다. 이 조건을 만족하지 않는 데이터들은 기본 출력인 [조건부 분할 기본 출력]으로 데이터가 출력됩니다. SQL 쿼리의 CASE 구문이나 프로그램 언어에서 SELECT 문 등에서와 같이, 데이터가 상위 조건(여기서는 높은 순서)에 일치하면, 해당 경로로 출력이 되며, 다른 경로로는 출력하지 못합니다. 예를 들어 위의 경우, [사례 2]의 조건을 실수로 seq>=3 && seq<=6으로 잘못 입력하였다 하더라도 seq가 3 인 데이터는 [사례 1]의 경로에서 먼저 처리되기 때문에, [사례 2]의 출력으로는 출력되지 않습니다. 기본 출력 이름(D)은 SQL 쿼리에서 CASE 구문의 ELSE와 같은 부분이며, 데이터가 윗부분의 조건에 모두 맞지 않을 경우의 출력을 나타냅니다. 만약 seq가 7 이상인 경우, 상위의 조건들을 모두 만족하지 않기 때문에 기본 출력인 [조건부 분할 기본 출력]으로 출력됩니다.
조건부 분할 변환은 SQL 쿼리의 CASE 문과 같은 데이터 분류 기능뿐만 아니라, SELECT문의 WHERE 절과 같은 조건 기능을 구현할 때에도 사용할 수 있습니다. 예를 들어 텍스트 형태의 웹 로그 데이터가 입력 데이터인 경우, URL 주소의 확장자가 .htm 이나 .asp 또는 .aspx 등과 같은 데이터만 추출하고 싶으며, .gif나 .jpg, .ico 등과 같은 이미지 관련 로그 데이터를 걸러내고 싶은 경우, 조건 절에
RIGHT(url, 3) == “gif”
등과 같은 형식으로 제거할 확장자를 이용한 조건을 입력하고, 출력은 [기본 출력]만 사용하도록 하는 식으로 구현할 수 있습니다.
'연구개발 > DTS & SSIS' 카테고리의 다른 글
기본 강좌 28 - 열 가져오기, 열 내보내기 변환 (0) | 2009.06.20 |
---|---|
기본 강좌 27 - 열 복사, 데이터 변환, 파생 열, 문자표 변환 (0) | 2009.06.20 |
기본 강좌 25 - 감사 변환 (0) | 2009.06.20 |
기본 강좌 24 - UNION ALL, 정렬, 집계 변환 (0) | 2009.06.20 |
기본 강좌 23 - OLE DB 명령 변환 (0) | 2009.06.20 |