SQL Server/SSIS 강좌

행 샘플링 / 비율 샘플링 – 데이터를 샘플링 하자

SungWookKang 2015. 7. 16. 10:04
반응형

행 샘플링 / 비율 샘플링 – 데이터를 샘플링 하자

 

안녕하세요 강성욱 입니다.(www.sqltag.org, www.sqler.com, http://blog.naver.com/jevida)

이번 시간에는 [행 샘플링], [비율 샘플링]에 대해서 알아 보도록 하겠습니다.

 

[행 샘플링] 변환은 입력 데이터에 지정한 행수 만큼 샘플 대상을 선정하는 작업 입니다.

[비율 샘플링] 변환은 입력 데이터에 대해 지정한 비율 만큼 대상을 선정하는 작업 입니다.

 

[BIDS]를 실행하여 [Integration Services 프로젝트]를 생성 합니다.

 

[제어 흐름]탭에서 [데이터 흐름 태스크]를 드래그 앤 드롭으로 추가 합니다.

[샘플링 변환]이름을 지정하여 태스크를 생성 합니다.

 

[데이터 흐름]탭에서 그림과 같이 [OLE DB 원본]와 [대상 데이터1(OLE DB 대상)], [대상 데이터2(OLE DB 대상)]을 끌어다 놓습니다. 그 사이 [멀티 캐스트]와 [행 샘플링], [비유 샘플링] 작업을 추가하여 데이터 흐름선을 연결 합니다.

 

멀태캐스트에 관한 내용은 아래 링크 참고

http://blog.naver.com/jevida/140147086468

[OLE DB 원본]에서 마우스 오른쪽을 클릭하여 [편집]을 선택 합니다.

 

그림과 같이 편집 창이 나타나면 [OLE DB 연결 관리자]에서 원본 DB의 연결 관리자를 선택하고 해당 테이블을 선택하여 [미리 보기]를 이용하여 정상적으로 데이터가 읽어오는지 확인 합니다.

(본 실습에서는 Adventureworks의 Address 테이블 사용)

 

[행 샘플링]작업에 마우스 오른쪽을 클릭하여 [편집]을 선택 합니다.

 

아래 그림과 같이 [행 샘플링 변환 편집기]가 실행 됩니다.

편집기에서는 샘플링 행 수를 지정할 수 있습니다.

행 수 : 샘플링 의 수 (10 – 10개 추출, 1000 – 1000개 행 추출)

샘플 출력 이름 : 샘플된 데이터를 출력할 경로의 이름. 여기에서는 샘플된 데이터의 행이 출력됨

선택하지 않은 출력 이름 : 샘플되지 않은 데이터를 출력할 경로의 이름. 여기에서는 샘플 되지 않은 데이터의 행이 출력됨.

 

[열] 탭으로 이동하여 [입력 열]을 선택 합니다. 실습에서는 [AddressLine1] 을 사용합니다.

 

편집이 완료 되었으면 데이터 흐름선을 [대상 데이터1]에 연결 합니다. 그러면 다음과 같은 선택창이 나타납니다.

[출력]에서 [선택된 행에서 샘플링 출력]을 선택 합니다.(샘플된 행을 가져온다)

 

[대상 데이터1] 작업에서 마우스 오른쪽을 클릭하여 편집을 선택 합니다.

 

[OLE DB 연결 관리자]에서 대상 DB의 연결 관리자를 선택 합니다. 그리고 [새로 만들기] 버튼을 클릭하여 대상 테이블을 새로 만들어 봅니다. (이미 대상 테이블이 존재하는 경우 [테이블 또는 뷰 이름]에서 대상 테이블을 선택 합니다.)

[새로 만들기]를 선택하면 [행 샘플링]에서 출력될 결과물의 테이블과 컬럼이 생성됨을 확인 할 수 있습니다.

 

[매핑] 탭으로 이동하여 대상이 적절히 매핑 되었는지 확인 합니다.

 

[비율 샘플링] 작업에서 마우스 오른쪽을 클릭하여 [편집]을 선택 합니다.

 

아래 그림과 같이 [비율 샘플링 변환 편집기]가 실행 됩니다.

편집기를 살펴보면 이전의 [행 샘플링 변환 편집기]와 유사한 창이 나타납니다.

여기서 다른 점은 [행 샘플링]은 실제 행수를 지정하였다면 여기에서는 전체 행에 대한 비율을 설정 합니다.

행의 백분율 : 샘플링 할 비율 (전체 행수 대비 비율)

임의 초기 값 사용 : 이 옵션을 체크하지 않으면 샘플링 작업이 수행될 때마다 매번 다른 샘플이 추출됩니다. 이 옵션을 체크하고 초기값(Seed)을 지정하면 동일 데이터에 대해서는 Seed값에 따라 샘플링되는 값은 항상 동일 합니다.

(실습에서는 행 백분율 : 10%, 임의 초기값 사용 안 함)

 

편집이 완료 되었으면 데이터 흐름선을 [대상 데이터2]에 연결 합니다. 그러면 다음과 같은 선택창이 나타납니다.

[출력]에서 [선택된 행에서 샘플링 출력]을 선택 합니다.(샘플된 행을 가져온다)

 

[대상 데이터2] 작업에서 마우스 오른쪽을 클릭하여 편집을 선택 합니다.

 

[OLE DB 연결 관리자]에서 대상 DB의 연결 관리자를 선택 합니다. 그리고 [새로 만들기] 버튼을 클릭하여 대상 테이블을 새로 만들어 봅니다.(이미 대상 테이블이 존재하는 경우 [테이블 또는 뷰 이름]에서 대상 테이블을 선택 합니다.)

[새로 만들기]를 선택하면 [비율 샘플링]에서 출력될 결과물의 테이블과 컬럼이 생성됨을 확인 할 수 있습니다.

 

[매핑] 탭으로 이동하여 대상이 적절히 매핑 되었는지 확인 합니다.

 

편집이 완료 되었으면 패키지를 실행 합니다.

늘 그러듯!

녹색 : 정상 실행

빨간색 : 오류 발생

 

패키지 작업을 보면 전체 19614의 입력행이 있습니다.

[행 샘플링]에서는 10건의 행을 설정 하였기에 출력 행수에 10개 행이 나타남을 확인 할 수 있습니다.

[비율 샘플링]에서는 전체 행의 10% 를 설정하였기에 1948개의 행이 출력됨을 확인 할 수 있습니다. 이때 비율 샘플링은 약간의 오차가 발생 할 수 있습니다.

 

패키지 작업이 완료 되었으면 SSMS를 실행하여 샘플링 작업이 잘 되었는지 확인 합니다.

 

[행 샘플링](대상 데이터1)에서는 샘플된 10건의 데이터를 확인 할 수 있습니다.

[비율 샘플링](대상 데이터2)에서는 샘플된 1948개의 데이를 확인 할 수 있습니다.

 

행 샘플링 및 비율 샘플링 작업은 전체 데이터 중 특정 수 만큼 샘플 대상을 추출하거나 대량 로그에서 표본 조사시 유용할 듯 합니다.

반응형