스크립트 구성 요소 – [데이터 변환] 사용
안녕하세요 강성욱 입니다. (www.sqltag.org, www.sqler.com, http://blog.naver.com/jevida)
이버 시간에는 [스크립트 구성 요소] 사용에 대해서 알아 보도록 하겠습니다.
2부 – 데이터 변환으로 사용하기!
[데이터 변환]은 입력 데이터에 대하여 복잡한 연산을 수행하여 출력 합니다.
[스크립트 구성 요소] –[데이터 원본] 사용 관련 링크
http://blog.naver.com/jevida/140160648324
[BIDS]를 실행하여 [Integration Services 프로젝트]를 생성 합니다.
[제어 흐름] 탭에서 [데이터 흐름 태스크]를 드래그 앤 드롭으로 추가 합니다.
[스크립트 구성요소 2] 이름을 지정하여 태스크를 생성 합니다.
[데이터 흐름] 탭에서 그림과 같이 [스크립트 구성 요소]를 끌어다 놓습니다. 이때 팝업으로 [스크립트 구성 요소 유형 선택]창이 나타 납니다.
이번 실습에서는 [변환]으로 선택 합니다.
[레코드 집합 대상]을 드래그 앤 드롭으로 끌어다 놓은 후 데이터 흐름선을 연결 합니다.
[원본 데이터]에서 마우스 오른쪽을 클릭하여 [편집]을 선택 합니다.
그림과 같이 편집 창이 나타나면 [OLE DB 연결 관리자]에서 원본 DB의 연결 관리자를 선택하고 해당 테이블을 선택하여 [미리보기]를 이용하여 정상적으로 데이터가 읽어오는지 확인 합니다.
(본 실습에서는 Adventureworks의 Sales.SalesOrderDetail 테이블 사용)
[스크립트 구성 요소]에서 마우스 오른쪽을 클릭하여 [편집]을 선택 합니다.
[스크립트 변환 편집기] – [입력 열] 탭에서 아래 그림처럼 입력 열을 선택 합니다.
[입/출력] 탭에서는 [열 추가]버튼을 이용해서 [출력 열]을 생성 합니다.
[스크립트]탭에서 [스크립트 편집] 버튼을 클릭 합니다.
새로운 VS 창이 나타나면 데이터 변환 코드를 프로그래밍 합니다.
이번 실습에서는 Qty(수량)과 가격(UnitPrice)값을 곱한 Total_Price 값을 계산해 보도록 합니다.
int Total_Price = 0;
Total_Price = Convert.ToInt32(Row.OrderQty) * Convert.ToInt32(Row.UnitPrice);
Row.TotalPrice = Total_Price; |
프로그래밍이 완료 되었으면 VS 창을 닫고 [데이터 흐름 태스크]의 빈 공간에서 마우스 오른쪽을 클릭하여 [변수]를 선택 합니다.
그리고 아래 그림처럼 변수를 생성합니다.
변수의 데이터 형식은 Object로 설정 합니다.
[레코드 집합 대상]에서 마우스 오른쪽을 클릭하여 [편집]을 선택 합니다.
[레코드 집합 대상 편집기] 창이 나타 납니다.
[구성 요소 속성] 탭에서 [사용자 지정 속성]의 [VariableName] 값을 앞에서 생성하였던 변수[User::TempResult]로 선택 합니다.
[입력 열] 탭에서 필요한 입력 열을 선택 합니다.
데이처가 처리되는 과정을 확인하기 위해 중간 경로에 [데이터 뷰어]를 추가 합니다.
[스크립트 구성 요소]와 [레코드 집합 대상]간의 녹색 경로에 마우스 오른쪽을 클릭하여 [데이터 뷰어]를 선택 합니다.
[데이터 흐름 경로 편집기]창이 나타나면 [데이터 뷰어]탭에서 [표]로 선택 합니다.
[구성] 버튼을 이용하여 [데이터 뷰어]에 나타낼 컬럼을 선택 합니다.
편집이 완료 되었으면 패키지를 실행 합니다.
늘 그러듯!
녹색 : 정상 실행
빨간색 : 오류 발생
[데이터 뷰어]에 [스크립트 구성 요소]에서 변환한 Total_Price값을 확인 할 수 있습니다.
'SQL Server > SSIS 강좌' 카테고리의 다른 글
변수 – 다양한 사용자 변수를 만들어 보자 (0) | 2015.07.16 |
---|---|
스크립트 구성 요소 – [데이터 대상] 사용 (2) | 2015.07.16 |
스크립트 구성 요소 – [데이터 원본] 사용 (6) | 2015.07.16 |
피봇 해제 변환 – 피봇된 데이터를 테이블 형태로 변환 (0) | 2015.07.16 |
피봇 변환 – 데이터 행렬 변환 (0) | 2015.07.16 |