데이터 흐름 작업
업데이트: 2006년 7월 17일
데이터 흐름 작업은 원본과 대상 사이에 데이터를 이동하는 데이터 흐름 엔진을 캡슐화하며, 이를 통해 사용자는 데이터 이동 시 데이터를 변환, 정리 및 수정할 수 있습니다. 데이터 흐름 작업을 패키지에 추가하면 패키지에서 데이터를 추출, 변환 및 로드할 수 있습니다.
데이터 흐름은 적어도 하나 이상의 데이터 흐름 구성 요소로 구성되지만 일반적으로 데이터를 추출하는 원본, 데이터를 수정, 라우팅 또는 요약하는 변환 및 데이터를 로드하는 대상과 같은 일련의 연결된 데이터 흐름 구성 요소로 구성됩니다. 구성 요소는 데이터 흐름에서 경로에 의해 연결됩니다. 각 경로는 경로의 시작과 끝을 나타내는 두 구성 요소를 지정합니다. 자세한 내용은 데이터 흐름 요소를 참조하십시오.
런타임 시 데이터 흐름 작업은 데이터 흐름으로부터 실행 계획을 작성하고, 이 계획은 데이터 흐름 엔진에 의해 실행됩니다. 데이터 흐름이 없는 데이터 흐름 작업을 만들 수 있지만 적어도 하나 이상의 데이터 흐름이 있는 경우에만 작업이 실행됩니다.
다음 다이어그램은 데이터 흐름이 하나 있는 데이터 흐름 작업을 보여 줍니다.
데이터 흐름 작업에는 여러 데이터 흐름이 포함될 수 있습니다. 작업에서 여러 데이터가 복사되고, 데이터 복사 순서가 중요하지 않은 경우에는 데이터 흐름 작업에 여러 데이터 흐름을 포함시키는 것이 편리합니다. 예를 들어 플랫 파일의 데이터를 데이터 웨어하우스의 별모양 스키마에 있는 다른 차원 테이블로 복사하는 5개의 데이터 흐름을 만들 수 있습니다.
하지만 데이터 흐름 엔진은 하나의 데이터 흐름 작업 내에 여러 데이터 흐름이 있는 경우 실행 순서를 결정합니다. 따라서 순서가 중요한 경우에는 패키지에서 각각 하나의 데이터 흐름이 포함된 여러 데이터 흐름 작업을 사용해야 합니다. 그런 다음에는 선행 제약 조건을 적용하여 작업의 실행 순서를 제어할 수 있습니다.
다음 다이어그램에서는 여러 데이터 흐름이 포함된 하나의 데이터 흐름 작업을 보여 줍니다.
패키지에는 여러 데이터 흐름 작업이 포함될 수 있으며 복잡한 패키지에는 그러한 경우가 많습니다. 예를 들어 패키지에서 데이터 흐름이 지정된 순서로 실행되어야 하거나 데이터 흐름 사이에 다른 작업이 수행되어야 하는 경우에는 각 데이터 흐름에 대해 별개의 데이터 흐름 작업을 사용해야 합니다.
데이터 흐름 작업은 또한 오류 흐름을 관리합니다. 런타임 시 데이터 흐름 구성 요소에서 데이터를 변환하거나, 조회를 수행하거나, 식을 계산할 때 행 수준의 오류가 발생할 수 있습니다. 이에 대한 예로는 문자열 값이 포함된 데이터 열을 정수로 변환할 수 없는 경우나 식에서 0으로 나누기가 발생하는 경우를 들 수 있습니다. 두 작업 모두 오류를 발생시키며, 오류가 포함된 행은 오류 흐름을 사용하여 개별적으로 처리할 수 있습니다. 패키지 데이터 흐름에서 오류 흐름을 사용하는 방법은 데이터 오류 처리를 참조하십시오.
텍스트 파일의 데이터를 SQL Server 데이터베이스에 대량 삽입하려는 경우 데이터 흐름 작업 및 데이터 흐름 대신 대량 삽입 작업을 사용할 수 있습니다. 하지만 대량 삽입 작업에서는 데이터를 변환할 수 없습니다. 자세한 내용은 대량 삽입 작업을 참조하십시오.
데이터 흐름 요소에 속성 식 사용
원본, 대상 및 변환의 여러 데이터 흐름 구성 요소에서는 해당 속성에 속성 식을 사용할 수 있습니다. 속성 식은 패키지가 로드되면 속성 값을 바꾸는 식입니다. 패키지는 런타임에 업데이트된 속성 값을 사용합니다. 식은 Integration Services 식 구문을 사용하여 작성되며 Integration Services 함수, 연산자, 식별자 및 변수를 포함할 수 있습니다. 자세한 내용은 Integration Services 식 참조, 패키지에서 식 사용 및 패키지에서 속성 식 사용을 참조하십시오.
Business Intelligence Development Studio에서 패키지를 구성하면 속성 식을 지원하는 데이터 흐름 구성 요소의 속성은 해당 속성이 속한 데이터 흐름 작업에 표시됩니다. 데이터 흐름 구성 요소의 속성 식을 추가, 변경 및 제거하려면 데이터 흐름 작업을 클릭하고 속성 창이나 작업 편집기를 사용하여 속성 식을 추가, 변경 또는 삭제합니다. 데이터 흐름 작업 자체의 속성 식은 속성 창에서 관리합니다.
데이터 흐름에 식을 사용하는 구성 요소가 들어 있으면 이 식도 속성 창에 표시됩니다. 식을 보려면 구성 요소가 속한 데이터 흐름 작업을 선택합니다. 속성은 항목별이나 사전순으로 볼 수 있습니다. 속성 창에서 항목별 보기를 사용하면 특정 속성에 사용되지 않은 식은 기타 범주에 표시됩니다. 사전순 보기를 사용하면 식은 데이터 흐름 구성 요소의 이름 순서로 표시됩니다.
로그 항목
Integration Services에서는 모든 작업에서 사용할 수 있는 로그 이벤트 집합을 제공합니다. Integration Services에서는 여러 작업에서 사용할 수 있는 사용자 지정 로그 항목도 제공합니다. 자세한 내용은 패키지에서 로깅 구현 및 로깅할 메시지 사용자 지정을 참조하십시오. 데이터 흐름 작업에는 다음 사용자 지정 로그 항목이 포함됩니다.
로그 항목 | 설명 |
---|---|
BufferSizeTuning |
데이터 흐름 작업으로 인해 버퍼 크기가 변경되었음을 나타냅니다. 로그 항목은 크기가 변경된 이유를 설명하고 임시 새 버퍼 크기를 나열합니다. |
OnPipelinePostEndOfRowset |
구성 요소에 ProcessInput 메서드의 마지막 호출로 설정된 해당 행 집합 끝 신호를 제공했음을 나타냅니다. 입력을 처리하는 데이터 흐름의 각 구성 요소에 대한 항목이 기록됩니다. 이 항목은 구성 요소의 이름을 포함합니다. |
OnPipelinePostPrimeOutput |
구성 요소가 PrimeOutput 메서드에 대한 마지막 호출을 완료했음을 나타냅니다. 데이터 흐름에 따라 여러 로그 항목이 기록될 수 있습니다. 구성 요소가 원본일 경우 이 로그 항목은 구성 요소가 행 처리를 완료했음을 의미합니다. |
OnPipelinePreEndOfRowset |
구성 요소가 ProcessInput 메서드의 마지막 호출로 설정된 해당 행 집합 끝 신호를 수신하려고 함을 나타냅니다. 입력을 처리하는 데이터 흐름의 각 구성 요소에 대한 항목이 기록됩니다. 이 항목은 구성 요소의 이름을 포함합니다. |
OnPipelinePrePrimeOutput |
구성 요소가 PrimeOutput 메서드에서 해당 호출을 수신하려고 함을 나타냅니다. 데이터 흐름에 따라 여러 로그 항목이 기록될 수 있습니다. |
OnPipelineRowsSent |
ProcessInput 메서드 호출로 구성 요소 입력에 제공한 행 수를 보고합니다. 이 로그 항목은 구성 요소 이름을 포함합니다. |
PipelineBufferLeak |
버퍼 관리자가 없어진 후에 버퍼를 활성 상태로 유지하는 모든 구성 요소에 대한 정보를 제공합니다. 버퍼가 여전히 활성 상태인 경우 버퍼 리소스가 해제되지 않으므로 메모리가 손실될 수 있습니다. 로그 항목은 구성 요소 이름과 버퍼 ID를 제공합니다. |
PipelineExecutionPlan |
데이터 흐름의 실행 계획을 보고합니다. 실행 계획은 버퍼를 구성 요소로 전송하는 방법에 대한 정보를 제공합니다. 이 정보는 PipelineExecutionTrees 로그 항목과 함께 데이터 흐름 작업 내에서 발생하는 사항에 대해 설명합니다. |
PipelineExecutionTrees |
데이터 흐름에서 레이아웃 실행 트리를 보고합니다. 데이터 흐름 엔진 스케줄러에서는 이 트리를 사용하여 데이터 흐름의 실행 계획을 작성합니다. |
PipelineInitialization |
작업에 대한 초기화 정보를 제공합니다. 이 정보에 BLOB 데이터의 임시 저장소에 사용할 디렉터리, 기본 버퍼 크기 및 버퍼의 행 수가 포함됩니다. 데이터 흐름 작업의 구성에 따라 여러 로그 항목이 기록될 수 있습니다. |
이러한 로그 항목은 패키지를 실행할 때마다 데이터 흐름 작업의 실행과 관련된 다양한 정보를 제공합니다. 패키지를 반복적으로 실행할 경우 해당 작업에서 수행하는 처리, 성능에 영향을 줄 수 있는 문제 및 해당 작업에서 처리하는 데이터 볼륨에 대한 중요한 기록 정보를 시간별로 제공하는 정보를 캡처할 수 있습니다.
데이터 흐름 작업의 예제 메시지
다음 표에서는 매우 간단한 패키지의 로그 항목에 대한 예제 메시지를 보여 줍니다. 이 패키지에서는 OLE DB 원본을 사용하여 테이블에서 데이터를 추출하고, 정렬 변환을 사용하여 데이터를 정렬하며, OLE DB 대상을 사용하여 다른 테이블에 데이터를 씁니다.
로그 항목 | 메시지 |
---|---|
BufferSizeTuning |
버퍼 유형 0의 행 때문에 버퍼 크기가 구성된 최대값보다 커집니다. 이러한 유형의 버퍼에는 9637개의 행만 있습니다. 버퍼 유형 2의 행 때문에 버퍼 크기가 구성된 최대값보다 커집니다. 이러한 유형의 버퍼에는 9497개의 행만 있습니다. 버퍼 유형 3의 행 때문에 버퍼 크기가 구성된 최대값보다 커집니다. 이러한 유형의 버퍼에는 9497개의 행만 있습니다. |
OnPipelinePostEndOfRowset |
구성 요소에 행 집합 끝 신호가 제공됩니다. : 1180 : 정렬 : 1181 : 정렬 입력 구성 요소에 행 집합 끝 신호가 제공됩니다. : 1291 : OLE DB 대상 : 1304 : OLE DB 대상 입력 |
OnPipelinePostPrimeOutput |
PrimeOutput 호출에서 구성 요소가 반환되었습니다. : 1180 : 정렬 PrimeOutput 호출에서 구성 요소가 반환되었습니다. : 1 : OLE DB 원본 |
OnPipelinePreEndOfRowset |
구성 요소가 모든 행 처리를 마쳤습니다. : 1180 : 정렬 : 1181 : 정렬 입력 구성 요소가 모든 행 처리를 마쳤습니다. : 1291 : OLE DB 대상 : 1304 : OLE DB 대상 입력 |
OnPipelinePrePrimeOutput |
구성 요소에 PrimeOutput이 호출됩니다. : 1180 : 정렬 구성 요소에 PrimeOutput이 호출됩니다. : 1 : OLE DB 원본 |
OnPipelineRowsSent |
행이 데이터 흐름 구성 요소에 입력으로 제공되었습니다. : : 1185 : OLE DB 원본 출력 : 1180 : 정렬 : 1181 : 정렬 입력 : 76 행이 데이터 흐름 구성 요소에 입력으로 제공되었습니다. : : 1308 : 정렬 출력 : 1291 : OLE DB 대상 : 1304 : OLE DB 대상 입력 : 76 |
PipelineExecutionPlan |
SourceThread0 드라이브: 1 요인: 1180 1291 출력 작업 목록 출력 ID 11에 대한 1 유형의 CreatePrimeBuffer SetBufferListener: 입력 ID 1181의 "WorkThread0" 출력 ID 12에 대한 3 유형의 CreatePrimeBuffer "OLE DB Source"(1)의 CallPrimeOutput 출력 작업 종료 목록 SourceThread0 종료 WorkThread0 드라이브: 1180 요인: 1180 1291 입력 작업 목록, 입력 ID 1181(1개 EOR 필요) 뷰 유형 2에 대한 "Sort"(1180)의 입력 ID 1181에 있는 CallProcessInput 입력 1181의 입력 작업 종료 목록 출력 작업 목록 출력 ID 1182에 대한 4 유형의 CreatePrimeBuffer SetBufferListener: 입력 ID 1304의 "WorkThread1" "Sort"(1180)의 CallPrimeOutput 출력 작업 종료 목록 WorkThread0 종료 WorkThread1 드라이브: 1291 요인: 1291 입력 작업 목록, 입력 ID 1304(1개 EOR 필요) 뷰 유형 5에 대한 "OLE DB Destination"(1291)의 입력 ID 1304에 있는 CallProcessInput 입력 1304의 입력 작업 종료 목록 출력 작업 목록 출력 작업 종료 목록 WorkThread1 종료 |
PipelineExecutionTrees |
실행 트리 시작 0 "OLE DB 원본 출력" 출력(11) "정렬 입력" 입력(1181) 실행 트리 종료 0 실행 트리 시작 1 "OLE DB 원본 오류 출력" 출력(12) 실행 트리 종료 1 실행 트리 시작 2 "정렬 출력" 출력(1182) "OLE DB 대상 입력" 입력(1304) "OLE DB 대상 오류 출력" 출력(1305) 실행 트리 종료 2 |
PipelineInitialization |
임시 BLOB 데이터 저장소 위치가 제공되지 않았습니다. 버퍼 관리자가 TEMP 및 TMP 환경 변수에 있는 디렉터리를 사용하게 됩니다. 기본 버퍼 크기는 10485760바이트입니다. 기본적으로 버퍼에는 10000개의 행이 있습니다. RunInOptimizedMode 속성이 false로 설정되어 있기 때문에 데이터 흐름이 사용되지 않은 구성 요소를 제거하지 않습니다. |
로그 이벤트는 대부분 여러 개의 항목을 기록하며 다양한 로그 항목의 메시지에는 복잡한 데이터가 들어 있습니다. 복잡한 메시지 내용을 보다 쉽게 이해하고 전달할 수 있도록 메시지 텍스트를 구문 분석할 수 있습니다. 로그의 위치에 따라 Transact-SQL 문이나 스크립트 구성 요소를 사용하여 복잡한 텍스트를 열이나 보다 유용한 그 밖의 형식으로 구분할 수 있습니다.
예를 들어 다음 표에서는 "행이 데이터 흐름 구성 요소에 입력으로 제공되었습니다. : : 1185 : OLE DB 원본 출력 : 1180 : 정렬 : 1181 : 정렬 입력 : 76"이라는 메시지가 여러 개의 열로 구문 분석된 결과를 보여 줍니다. 이 메시지는 OLE DB 원본의 행이 정렬 변환으로 보내질 때 OnPipelineRowsSent 이벤트에 의해 기록된 것입니다.
열 | 설명 | 값 |
---|---|---|
PathID |
OLE DB 원본과 정렬 변환 사이의 경로에 대한 ID 속성 값입니다. |
1185 |
PathName |
경로의 Name 속성 값입니다. |
OLE DB 원본 출력 |
ComponentID |
정렬 변환의 ID 속성 값입니다. |
1180 |
ComponentName |
정렬 변환의 Name 속성 값입니다. |
정렬 |
InputID |
정렬 변환에 대한 입력의 ID 속성 값입니다. |
1181 |
InputName |
정렬 변환에 대한 입력의 Name 속성 값입니다. |
정렬 입력 |
RowsSent |
정렬 변환의 입력으로 보내지는 행 수입니다. |
76 |
원본
다음 원본에는 속성 식을 통해 업데이트할 수 있는 속성이 있습니다.
자세한 내용은 Source Custom Properties을 참조하십시오.
변환
다음 변환에는 속성 식을 통해 업데이트할 수 있는 속성이 있습니다.
자세한 내용은 Transformation Custom Properties을 참조하십시오.
대상
다음 대상에는 속성 식을 통해 업데이트할 수 있는 속성이 있습니다.
자세한 내용은 Destination Custom Properties을 참조하십시오.
데이터 흐름 작업 구성
속성 창을 사용하거나 프로그래밍 방식으로 속성을 설정할 수 있습니다.
속성 창에서 이러한 속성을 설정하는 방법을 보려면 다음 항목을 클릭하십시오.
데이터 흐름 작업을 프로그래밍 방식으로 구성
패키지에 데이터 흐름 작업을 프로그래밍 방식으로 추가하고 데이터 흐름 속성을 설정하는 방법을 보려면 다음 항목을 클릭하십시오.
참고 항목
개념
Integration Services 작업
패키지 제어 흐름 만들기
패키지 데이터 흐름 만들기
관련 자료
Adding the Data Flow Task Programmatically
도움말 및 정보
변경 내역
릴리스 | 내역 |
---|---|
2006년 7월 17일 |
|
2006년 4월 14일 |
|
2005년 12월 5일 |
|