피벗 변환

피벗 변환은 입력 데이터를 열 값으로 피벗함으로써 정규화된 데이터 집합을 정규화 상태는 낮지만 좀 더 압축된 버전으로 만듭니다. 예를 들어 고객 이름, 제품 및 구매 수량이 나열된 정규화된 Orders 데이터 집합에는 일반적으로 여러 제품을 구매한 고객에 대해 여러 행이 포함되어 있으며, 각 행에는 해당 고객의 각 제품 주문 정보가 표시되어 있습니다. 피벗 변환을 사용하여 이 데이터 집합을 제품 열로 피벗하면 각 고객별로 단일 행만 포함된 데이터 집합을 출력할 수 있습니다. 이 단일 행에는 해당 고객의 모든 구매 정보가 나열되며, 제품 이름은 열 이름으로, 그리고 수량은 제품 열에 값으로 표시됩니다. 모든 고객이 모든 제품을 구매하는 것은 아니기 때문에 여러 열에 Null 값이 포함될 수 있습니다.

데이터 집합이 피벗되면 입력 열은 피벗 프로세스에서 서로 다른 역할을 수행합니다. 열은 다음과 같은 방식으로 사용될 수 있습니다.

  • 열이 변경되지 않은 상태로 출력에 전달됩니다. 여러 입력 행이 단일 출력 행으로 될 수 있기 때문에 변환에서 열의 첫 번째 입력 값만 복사됩니다.

  • 열이 레코드 집합을 식별하는 키 또는 키의 일부 역할을 수행합니다.

  • 열이 피벗을 정의합니다. 이 열의 값은 피벗된 데이터 집합의 열과 연결됩니다.

  • 열에 포함된 값이 피벗으로 생성된 열에 배치됩니다.

다음 다이어그램에서는 Product 열로 데이터를 피벗하기 전의 데이터 집합을 보여 줍니다.

피벗 후의 데이터 집합

다음 다이어그램에서는 Product 열로 데이터를 피벗한 후의 데이터 집합을 보여 줍니다.

피벗 전의 데이터 집합

출력 데이터 집합에서 레코드를 가능한 적게 만들 수 있도록 데이터를 효율적으로 피벗하려면 입력 데이터가 피벗 열에서 정렬되어 있어야 합니다. 데이터가 정렬되어 있지 않을 때 피벗 변환을 수행하면 집합 멤버 자격을 정의하는 열인 집합 키에서 각 값에 대해 여러 레코드가 생성됩니다. 예를 들어 데이터 집합을 Name 열로 피벗할 때 이름이 정렬되어 있지 않으면 Name의 값이 변경될 때마다 피벗이 발생하기 때문에 각 고객에 대해 두 개 이상의 행이 출력 데이터 집합에 포함될 수 있습니다.

입력 데이터에는 중복 행이 포함될 수 있는데 이 경우 피벗 변환이 실패합니다. "중복 행"은 집합 키 열과 피벗 열에 동일한 값이 있는 행을 의미합니다. 예를 들어 위의 다이어그램에 표시된 것과 같이 데이터가 Product 열에 피벗되기 전에 데이터 집합을 사용하는 경우 Cust 열의 값이 Kate이고 Product 열의 값이 Soda인 행을 추가하면 Qty 열의 수량에 관계없이 이러한 중복 값으로 인해 피벗 변환이 실패하게 됩니다. 오류를 방지하려면 오류 행이 오류 출력으로 리디렉션되도록 변환을 구성하거나 중복 행이 없도록 값을 미리 집계합니다. 예를 들어 예제 데이터 집합에서는 고객 및 제품별로 Qty 열의 값에 대한 합계를 구할 수 있습니다.

피벗 변환에서는 입력 및 출력 열의 속성을 사용하여 피벗 작업을 정의합니다.

피벗 변환은 PivotKeyValue 사용자 지정 속성을 포함합니다. 이 속성은 패키지가 로드되면 속성 식을 사용하여 업데이트할 수 있습니다. 자세한 내용은 Integration Services 식 참조, 패키지에서 속성 식 사용변환 사용자 지정 속성을 참조하십시오.

이 변환에는 하나의 입력, 하나의 일반 출력 및 하나의 오류 출력이 있습니다.

예제 데이터 집합 구성

다이어그램에 표시된 예제 데이터 집합은 다음과 같이 구성됩니다. Cust 열의 PivotUsage 속성은 1로 설정되어 있으며 이 열이 집합 키 열임을 나타냅니다. Product 입력 열의 PivotUsage 속성은 2로 설정되어 있으며 각 제품에 대해 하나의 열이 생성됨을 나타냅니다. Qty 입력 열의 PivotUsage 속성은 3으로 설정되어 있으며 수량 값이 피벗 열에 배치됨을 나타냅니다.

변환 출력은 6개 열을 포함하도록 구성되었습니다. 고급 편집기 대화 상자를 사용하여 추가할 수 있는 열의 이름은 Cust, Ham, Soda, Milk, BeerChips입니다. Ham 열의 PivotKeyValue 속성은 Ham으로 설정되어 있으며 변환 중에 해당 값을 입력 열에서 찾을 수 있음을 나타냅니다. Soda 열의 PivotKeyValue 속성도 Soda로 설정되어 있으며, 다른 열에 대해서도 비슷하게 설정되어 있습니다.

그런 다음 변환 입력의 열이 출력의 열로 매핑됩니다.

Cust 열의 SourceColumn 속성은 Cust 입력 열의 계보 식별자를 사용하도록 구성되어 있습니다. Ham, Soda, Milk, BeerChips 열의 SourceColumn 속성은 Qty 입력 열의 계보 식별자를 사용하도록 구성되어 있습니다. 이를 구성하기 위한 또 다른 방법은 Ham, Soda, Milk, BeerChips 열의 SourceColumn 속성을 -1로 설정하여 데이터 값 대신 True 값을 삽입하는 것입니다. 예를 들어 Beer 열에 12나 24 대신 True 값을 포함시켜서 구매한 수량을 표시하는 대신 고객이 해당 제품을 구매했다는 사실만 나타낼 수 있습니다.

변환 출력의 행에는 CustQty 입력 열의 값이 포함됩니다.

피벗 옵션

입력 열의 PivotUsage 속성을 설정하여 피벗 프로세스에서 각 열이 수행하는 역할을 지정할 수 있습니다. PivotUsage의 올바른 값은 0, 1, 2 및 3입니다.

다음 표에서는 PivotUsage 옵션에 대해 설명합니다.

옵션

설명

0

열이 피벗되지 않고 열 값만 변환 출력으로 전달됩니다.

1

열이 하나 이상의 행을 한 집합의 일부로 식별하는 집합 키의 일부입니다. 동일 집합 키의 모든 입력 행이 하나의 출력 행으로 조합됩니다.

2

열이 피벗 열입니다. 각 열 값으로부터 적어도 하나 이상의 열이 생성됩니다.

3

이 열의 값은 피벗 결과로 생성된 열에 배치됩니다.

피벗 변환 구성

SSIS 디자이너를 사용하거나 프로그래밍 방식으로 속성을 설정할 수 있습니다.

고급 편집기 대화 상자를 사용하거나 프로그래밍 방식으로 설정할 수 있는 속성에 대한 자세한 내용을 보려면 다음 항목 중 하나를 클릭하십시오.

속성을 설정하는 방법은 방법: 데이터 흐름 구성 요소의 속성 설정을 참조하십시오.

Integration Services 아이콘(작은 아이콘) Integration Services 관련 최신 정보 얻기

Microsoft의 최신 다운로드, 아티클, 예제 및 비디오와 커뮤니티의 정선된 솔루션을 보려면 MSDN 또는 TechNet의 Integration Services 페이지를 방문하십시오.

이러한 업데이트에 대한 자동 알림을 받으려면 해당 페이지에서 제공하는 RSS 피드를 구독하십시오.