SQL Server/SSIS 강좌

집계 - 카운트, 평균, 그룹, 최소, 최대 다양한 집계를 하자

SungWookKang 2015. 7. 16. 09:54
반응형

집계 - 카운트, 평균, 그룹, 최소, 최대 다양한 집계를 하자

 

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

이번 시간은 [집계]에 대해서 알아 보도록 하겠습니다.

 

집계는 입력열에 대하여 SUM이나 MAX, MIN, COUNT 등과 같은 집계연산을 수행하여 결과를 반환 합니다. SQL 쿼리에서 GROUP BY 구문과 비슷하여 집계를 수행할 열과 연산을 지정 합니다.

 

집계 연산 종류

GROUP BY : 집계 작업을 수행하기 위한 그룹 열.

SUM : 합계

AVERAGE : 평균 값

COUNT : 전체 로우 수

DISTINCT COUNT : 유니크 한 로우 수

MINIMUM : 최소값 반환 (SQL 쿼리와는 달리 문자형에 대해서는 수행 할 수 없음.)

MAXIMUM : 최대값 반환 (SQL 쿼리와는 달리 문자형에 대해서는 수행 할 수 없음.)

 

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

 

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

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

 

[데이터 흐름]탭에서 그림과 같이 원본 데이터(OLE DB원본)와 대상 데이터(OLE DB 대상)를 끌어다 놓습니다. 그리고 그 사이 [집계] 작업을 추가하여 데이터 흐름 선을 연결 합니다.

 

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

 

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

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

 

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

 

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

편집기를 살펴 보면 GROUP 연산에 대한 고급 속성과 편집기 고급 설정 탭이 있습니다.

 

[집계]탭에서 [고급] 버튼을 확장하면 GROUP BY에 대한 세부 속성을 설정 할 수 있습니다.

 

 

[편집기]-[고급]탭에서 또한 위의 고급 속성과 비슷하게 키 배율, 키 수, 고유 키 수 등을 지정할 수 있습니다. 하지만 여기에서의 속성은 변환 작업 전체에 대해 설정이 적용 됩니다.

 

집계 탭의 고급 설정 – 각 집계 작업에 대한 설정

집계 탭 하단의 설정 – 출력에 포함된 각 열에 대한 설정

고급 탭의 설정 – 집계 작업 전체에 대한 설정.

 

고유 수 배율 : DISTINCT COUNT연산일 때 이 속성을 사용한다. 고유 수의 정도에 따라 메모리를 미리 확보 함으로써 연산 수행 성능을 향상 시킬 수 있다.

    Unspecified : 고유 수 배율 속성 사용하지 않음(디폴트)

    LOW : 약 500000개 정도의 고유 수 정도

    MEDIUM : 약 5000000개 정도의 고유 수 정도

    HIGH : 약 25000000개 정도의 고유 수 정도.

 

고유 키 수 : 정확한 고유 수 값을 아는 경우 설정 한다. 이를 미리 지정함으로써 메모리를 미리 확보할 수 있다. 고유 수 배울과 고유 키 수를 모두 지정하면 고유 키 수의 속성이 적용 된다.

 

자동 확장 비율 : 집계 작업을 위한 메모리 사용에 대한 고급 설정으로 집계 작업 수행 중 추가로 메모리가 필요 할 때 늘릴 비율을 지정하는 것. (기본값 25%)

실습에서는 AddressID의 전체 로우수를 집계하도록 하겠습니다.

 

MINIMUM : 최소값 반환 (SQL 쿼리와는 달리 문자형에 대해서는 수행 할 수 없음.)

MAXIMUM : 최대값 반환 (SQL 쿼리와는 달리 문자형에 대해서는 수행 할 수 없음.)

 

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

 

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

[새로 만들기를 선택하면 [변환 작업]에 추가하였던 컬럼이 자동으로 생성됨을 확인 할 수 있습니다.

 

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

 

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

늘 그러듯!

녹색 : 정상 실행

빨간색 : 오류 발생

 

집계 작업이므로 전체 로우수에 대한 카운트만 출력됨을 확인 할 수 있습니다.

패키지 작업이 완료 되었으면 SSMS를 실행하여 실제로 데이터가 정상적으로 집계 되었는지 확인 합니다.

 

대상 데이터와 원본 데이터를 집계한 결과 동일 함을 확인 할 수 있습니다.

 

집계 작업 또한 여러가지 작업이 병행가능 하므로 여러 원본에서 데이터 집계 시 매우 유용할 듯 합니다.

 

반응형