스크립트 구성 요소 – [데이터 원본] 사용

 

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

이번 시간에는 [스크립트 구성 요소]에 대해서 알아 보도록 하겠습니다.

 

1탄 - 데이터 원본으로 이용하기!

 

[스크립트 구성 요소]는 다양한 기능을 수행 할 수 있는 개체 입니다. [제어 흐름]에도 [스크립트 작업]이 있지만 [스트립트 구성 요소]는 원본 데이터를 변경하는 데이터 흐름과 관련된 전문적인 작업을 수행하는 개체 입니다

 

(1) 스크립트 구성 요소가 [데이터 원본]으로 사용 할 수 있는 경우.

  • 입력 데이터가 플랫파일 연결이나 OLE DB 연결 등과 같이 간단한 설정을 할 수 없는 경우.
  • 기본적으로 제공하는 데이터 원본 유형 이외의 형태 – SQL 2005 SSIS 이후에는 ODBC연결을 지원하지 않아 스크립트 구성요소를 이용하여 다양한 프로그래밍으로 연결이 가능합니다.
  • 임의의 테스트 데이터를 발생 시키는 경우

 

(2) 스크립트 구성 요소가 [데이터 변환]으로 사용 할 수 있는 경우

  • 입력 데이터에 대해 복잡한 변환 수행
  • 입력 데이터를 이용한 연산 수행 – 입력 데이터에 대한 복잡한 산술연산 작업이 가능 합니다.
  • 입력 데이터에 열 추가 – 각 행 번호 또는 계산된 결과 열을 추가 할 수 있습니다.
  • 입력 데이터를 이용한 유효성 판단 – 예를들어 입력데이터가 NULL인경우 판단하지 않고 다음 행으로 넘어가도록 설정 할 수 있습니다.

 

(3) 스크립트 구성 요소가 [데이터 대상]으로 사용 할 수 있는 경우.

  • 기본적으로 제공하는 데이터 대상 유형 이외의 형태 - ODBC연결과 같이 기존의 SSIS에서 제공하지 않는 데이터 대상 유형을 구현 할 수 있습니다.
  • 처리되는 데이터를 이용하여 다양한 작업을 수행 – 처리된 데이터를 입력 받은 후 이를 이용하여 SQL 쿼리 파일을 만들거나 웹 보고서를 생성하는 등 결과 데이터를 이용한 다양한 작업이 가능 합니다.

 

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

 

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

[스크립트 구성 요소] 이름을 지정하여 태스크를 생성 합니다.

 

[데이터 흐름] 탭에서 그림과 같이 [스크립트 구성 요소]를 끌어다 놓습니다. 이때 팝업으로 [스크립트 구성 요소 유형 선택]창이 나타 납니다.

이번 실습에서는 [원본]으로 선택 합니다.

 

[레코드 집합 대상]을 드래그앤 드롭으로 끌어다 놓은 후 데이터 흐름선을 연결 합니다.

 

[스크립트 구성 요소] 에서 마우스 오른쪽을 클릭하여 [편집]을 선택 합니다.

 

[스크립트 변환 편집기]가 실행 됩니다. 편집기에는 3개의 탭을 확인 할 수 있습니다.

 

[입/출력] 탭에서는 입,출력 속성을 설정 할 수 있습니다.

입/출력 이름을 [OutResult]로 변경합니다. (한글 사용시 VSA에서 깨짐 현상 발생.) 트리를 확장하여 [출력 열]에서 [열 추가] 버튼을 이용하여 출력열을 추가 합니다.

이번 실습에서는 [1-1000 사이의 난수 발생 결과]를 출력합니다. 따라서 Num 출력 열에 난수가 나타납니다.

 

[스크립트] 탭에서는 해당 스크립트의 [언어] 및 스크립트 편집을 할 수 있습니다.

저는 VS C# 2008 을 사용하기에 해당 언어를 선택하고 [스크립트 편집] 버튼을 클릭 합니다.

 

[스크립트 편집]을 실행하면 새로운 VS 창이 나타 납니다. 여기에서 스크립트를 해당 언어에 맞게 프로그래밍 하면 됩니다.

 

이번 실습에서는 1-1000 사이의 난수 발생을 출력하기에 해당 코드를 아래 그림처럼 입력 합니다.

 

int i;

Random RND = new Random();

 

for (i = 1; i <= 10; i++)

{

OutResultBuffer.AddRow();

OutResultBuffer.Num = RND.Next(1, 1001);

}

 

 

[스크립트] 편집이 완료 되었으면 해당 창을 닫고 [데이터 흐름] 탭으로 이동 합니다.

그리고 빈 화면에서 마우스 오른쪽을 클릭하여 [변수]를 실행 합니다.

 

[변수]탭이 나타나면 아래 그림과 같이 변수를 생성하고 [Num]이라는 변수명을 지정 합니다.

데이터 형식은 [Object]를 선택 합니다. 이는 데이터 대상인 [레코드 집합 대상]에서 이용할 변수 입니다.

 

[레코드 집합 대상]에서 마우스 오른쪽을 클릭하여 [편집]을 선택 합니다.

 

[고급 레코드 집합 데상 편집기]창이 나타 납니다.

[구성 요소 속성] 탭에서 [사용자 지정 속성]의 [VariableName] 값을 앞에서 생성하였던 사용자 변수 [User::Num]로 선택 합니다.

 

[입력 열] 탭에서는 해당 변수에 출력할 열을 선택 합니다.

 

[입/출력 속성] 탭에서는 여러가지 속성을 확인 및 설정 할 수 있습니다. [입력 열]탭에서 나열되는 열은 별도로 선택할 필요는 없습니다.

 

데이터가 처리되는 과정을 확인하기 위해 중간 경로에 [데이터 뷰어]를 추가 합니다.

[스크립트 구성 요소]와 [레코드 집합 대상]간의 녹색 경로에서 마우스 오른쪽을 클릭하여 [데이터 뷰어]를 선택 합니다.

 

아래 그림과 같이 [데이터 흐름 경로]편집기 창이 나타납니다.

 

 

 

[데이터 뷰어] 탭에서 어떤 형태로 나타낼 것인지 선택 합니다. 이번 실습에서는 [표]형태로 나타 냅니다.

 

편집기 선택이 완료되면 다음과 같은 화면이 나타납니다.

 

[데이터 뷰어] 생성이 완료되면 흐름선 옆에 작은 아이콘 모양이 나타난 것을 확인 할 수 있습니다.

 

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

늘 그러듯!

녹색 : 정상 실행

빨간색 : 오류 발생

 

[데이터 뷰어]에 [스크립트 구성 요소]에서 발생한 난수를 출력한 결과를 확인 할 수 있습니다.

 

 

  1. VqXp 2020.07.05 04:24

    좋은 자료입니다.

  2. VqXp 2020.07.05 04:24

    좋은 자료입니다.

  3. 2jzj 2020.07.07 02:39

    좋은 자료입니다.

  4. w05u 2020.07.07 02:39

    좋은 내용입니다.

  5. 잘 보고 갑니다~~

  6. Vira 2020.07.17 15:39

    좋은 정보입니다.

+ Recent posts