Share via


데이터 정리 패키지 예제

업데이트: 2005년 12월 5일

데이터 정리 예제는 데이터를 정리하는 패키지입니다. 이 패키지는 잠재적인 고객을 나타내는 이름과 주소 목록을 데이터로 사용합니다. 이 데이터에는 맞춤법 오류, 찾을 수 없는 정보, 이미 데이터베이스에 있는 고객, 잘못된 고객 또는 같은 고객에 대한 조금씩 다른 여러 정보 등이 들어 있으므로 정리가 필요합니다.

패키지 제어 흐름은 두 작업으로 구성됩니다. 첫 번째 작업은 CustomerLeads 입력 테이블을 만들고 이름이 ExistingCustomerLeads, NewCustomerLeadsDuplicateCustomerLeads인 3개의 출력 테이블을 만드는 SQL 실행 작업입니다. 두 번째 작업은 CustomerLeads 테이블에서 추출한 데이터를 정리하는 데이터 흐름을 실행하는 Data Flow 데이터 흐름입니다. 데이터 흐름은 고유한 신규, 기존 고객 및 중복 고객을 식별하고 각 고객 유형의 행을 적절한 출력 테이블에 씁니다.

영어 버전이 아닌 Windows에서 이 예제를 실행할 경우 예제를 열거나 실행하기 위해 Program Files 폴더의 해당 언어 버전 이름을 바꾸어야 할 수 있습니다.

[!참고] 이 예제에서는 SQL Server 2005의 Enterprise 버전에서만 사용할 수 있는 유사 항목 그룹화 및 유사 항목 조회 변환을 사용합니다.

ms160742.note(ko-kr,SQL.90).gif중요:
예제는 교육용으로만 제공되므로 프로덕션 환경에서 사용하기에 적합하지 않으며 프로덕션 환경에서 테스트를 수행하지 않았습니다. Microsoft에서는 이러한 예제에 대해 기술 지원을 제공하지 않습니다.

데이터 정리에 대한 자세한 내용은 MSDN Library(https://msdn.microsoft.com/library)에서 다음 문서를 검색하십시오.

  • Data Cleansing Applications with SQL Server Integration Services(Windows Media Video)
  • Data Cleaning using the Fuzzy Grouping and Fuzzy Lookup Transformations(백서)

요구 사항

이 예제 패키지를 실행하려면 다음 준비 작업이 필요합니다.

  • AdventureWorks 데이터베이스를 설치했으며 이 데이터베이스에 대해 관리 권한이 있어야 합니다.
  • 명령줄에서 예제 패키지를 실행하려는 경우 SQL Server 2005 Integration Services(SSIS)를 설치해야 합니다.
  • SSIS 디자이너에서 예제 패키지를 열어 실행하려는 경우 Business Intelligence Development Studio를 설치해야 합니다.

예제를 설치하는 방법은 SQL Server 온라인 설명서의 "예제 Integration Services 패키지 설치"를 참조하십시오. SQL Server 2005 첫 릴리스 이후에 릴리스된 새 예제를 포함하여 최신 버전의 예제를 얻으려면 SQL Server 2005 예제 및 예제 데이터베이스(2006년 4월)를 참조하십시오.

예제 패키지의 위치

예제가 기본 설치 위치에 설치된 경우 데이터 정리 패키지는 다음 폴더에 있습니다.

C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\DataCleaning Sample\Data Cleaning\

이 예제 패키지를 실행하려면 다음 파일이 필요합니다.

파일 설명

DataCleaning.dtsx

예제 패키지

CreateTables.sql

테이블을 만드는 SQL 문

예제에 데이터 뷰어 추가

데이터 정리 패키지의 작동 방식을 확실히 이해하기 위해 데이터 흐름에 데이터 뷰어를 추가하여 데이터 흐름 구성 요소 간 이동에 따라 데이터를 볼 수 있습니다. 데이터 뷰어는 다음 경로에 추가하는 것이 좋습니다.

  • Union All에서 OLE DB Destination-Existing Customers로의 경로
  • Conditional Split on Canonical Record for Group에서 OLE DB Destination-Unique Customer Leads로의 경로
  • Conditional Split on Canonical Record for Group에서 OLE DB Destination-Duplicate Customer Leads로의 경로

데이터 뷰어를 추가하려면

  1. 경로를 마우스 오른쪽 단추로 클릭하고 데이터 뷰어를 클릭합니다.

  2. 데이터 흐름 경로 편집기에서 추가를 클릭합니다.

  3. 데이터 뷰어 구성 대화 상자의 유형 목록에서 를 클릭합니다. 기본적으로 모든 열이 데이터 뷰어에 표시됩니다.

  4. 다른 경로에 대해 1단계에서 3단계까지 반복합니다.

예제 실행

패키지는 dtexec 유틸리티를 사용하여 명령줄에서 실행하거나 Business Intelligence Development Studio에서 실행할 수 있습니다.

영어 버전이 아닌 Windows를 사용할 경우 예제 패키지를 성공적으로 실행하기 위해 패키지에서 사용되는 모든 파일 연결 관리자의 ConnectionString 속성을 업데이트해야 할 수 있습니다. 연결 관리자에 사용된 경로가 사용자 컴퓨터에서 올바른지 확인하고 필요한 경우 Program Files 폴더의 해당 언어 버전 이름이 포함되도록 경로를 수정해야 합니다.

이 예제에서는 CreateTables.sql 연결 관리자에 대한 ConnectionString 속성에서 "Program Files"를 업데이트해야 할 수 있습니다.

dtexec를 사용하여 패키지를 실행하려면

  1. 명령 프롬프트 창을 엽니다.

  2. 디렉터리를 dtexec의 위치인 C:\Program Files\Microsoft SQL Server\90\DTS\Binn으로 변경합니다.

  3. 다음 명령을 입력합니다.

    dtexec /f "C:\Program Files\Microsoft SQL Server\90\Samples\Integration Services\Package Samples\Data Cleaning Sample\DataCleaning\DataCleaning.dtsx"
    
  4. Enter 키를 누릅니다.

dtexec 유틸리티를 사용하여 패키지를 실행하는 방법은 SQL Server 2005 온라인 설명서의 "dtexec 유틸리티" 항목을 참조하십시오.

Business Intelligence Development Studio에서 패키지를 실행하려면

  1. Business Intelligence Development Studio를 엽니다.

  2. 파일 메뉴에서 열기를 가리킨 다음 프로젝트/솔루션을 클릭합니다.

  3. DataCleaning Sample 폴더를 찾고 이름이 DataCleaning.sln인 파일을 두 번 클릭합니다.

  4. 솔루션 탐색기에서 SSIS 패키지 폴더의 DataCleaning.dtsx를 마우스 오른쪽 단추로 클릭한 후 패키지 실행을 클릭합니다.

[!참고] SSIS 디자이너에서 패키지를 열어 패키지 속성을 볼 경우 DelayValidation 속성이 True로 설정된 것을 확인할 수 있습니다. 데이터 정리 예제 패키지인 CustomerLeads가 일부 테이블을 사용하고 있으므로 패키지 유효성 검사가 지연되어야 하며, 패키지를 최초로 실행해야 이름이 ExistingCustomerLeads, NewCustomerLeadsDuplicateCustomerLeads인 3개의 출력 테이블을 만들 수 있습니다. DelayValidationFalse로 설정된 경우 패키지를 실행하기 전에 SSIS 디자이너에서 패키지를 열면 유효성 검사 오류가 발생합니다.

예제의 구성 요소

다음 표에서는 예제 내에서 사용되는 작업, 컨테이너, 데이터 원본과 대상 및 변환을 보여 줍니다.

요소 용도

SQL 실행 작업

SQL 실행 작업의 이름은 Create Customer Address Reference Table View, Populate NewCustomer Input Table and Create Output Tables입니다. 이 작업은 CustomerLeads 입력 테이블과 3개의 출력 테이블인 ExistingCustomerLeads, NewCustomerLeadsDuplicateCustomerLeads를 만듭니다.

데이터 흐름 작업

Fuzzy Lookup Data Flow Task는 패키지에서 데이터 흐름을 실행합니다.

OLE DB 원본

OLE DB Source - Customer LeadsCustomerLeads 테이블에서 레코드를 읽습니다.

조회 변환

조회 변환인 Lookup against Existing Customers는 기존 고객을 식별하기 위해 정확한 조회를 수행합니다. 조회에 성공하면 ExistingCustomerLeads 테이블에 레코드가 삽입됩니다.

파생 열 변환

Derived Column은 각 행에 _Similarity 열을 추가하고 열 값을 1로 설정합니다.

유사 항목 조회 변환

유사 항목 조회 변환인 Fuzzy Lookup against Existing Customers는 기존 고객 레코드와 비슷하게 일치하는 고객 레코드를 식별하기 위한 유사 항목 조회를 수행합니다.

변환은 유사성 점수를 포함하는 _Similarity 열을 각 행에 추가합니다. 점수 0.0은 일치하는 항목이 없음을 나타내고 1.0은 정확히 일치하는 항목을 찾았음을 나타냅니다. 0.0에서 1.0 사이의 점수는 유사성의 척도이며 1.0에 가까운 값일수록 유사성이 더 커집니다.

조건부 분할 변환

첫 번째 조건부 분할 변환인 ConditionalSplit on _Similarity는 유사 항목 조회를 통해 매겨진 유사성 점수 값에 따라 입력 행을 두 출력 중 하나로 전달합니다. 유사성 점수가 .70 이상인 행은 ExistingCustomerLeads 테이블에 기록됩니다. 유사성 점수가 70 이하인 행은 유효한 새 고객을 나타낼 수 있으므로 이 행을 더 자세히 정리합니다.

두 번째 조건부 분할 변환인 Conditional Split on Canonical Record for Group은 데이터 행의 중복 여부에 따라 입력 행을 두 출력 중 하나로 전달합니다. _key_in_key_out 열의 값이 같을 경우 이 행을 그룹에서 정식 행으로 사용하고 정식 행을 NewCustomerLeads 테이블에 삽입합니다. _key_in_key_out 열이 다를 경우 이 행을 유사 항목 중복으로 간주하고 DuplicateCustomerLeads 테이블에 삽입합니다.

UNION ALL 변환

Union All은 기존 고객과 정확하게 일치하거나 비슷하게 일치하는 행을 모두 한 데이터 집합에 통합합니다.

유사 항목 그룹화 변환

유사 항목 그룹화 변환인 Fuzzy Grouping은 중복 가능성이 있는 고객을 그룹화합니다. 이 변환은 _key_in, _key_out_score의 3개 열을 각 행에 추가합니다. _key_in은 각 입력 행에 할당된 고유한 식별자이며 _key_out은 유사 항목 그룹의 모든 행을 대표하는 행에 할당된 특정 _key_in을 포함합니다. 유사 항목 그룹의 모든 행의 _key_out 값은 같습니다. _score 열은 지정된 입력 행과 정식 값으로 선택된 행 사이의 텍스트 유사성을 나타내는 0.0에서 1.0 사이의 값입니다.

OLE DB 대상

OLE DB 대상인 OLE DB Destination - Existing CustomersExistingCustomerLeads 테이블에 행을 삽입합니다.

OLE DB 대상인 OLE DB Destination - Unique Customer LeadsNewCustomerLeads 테이블에 행을 삽입합니다.

OLE DB 대상인 OLE DB Destination - Duplicate Customer LeadsDuplicateCustomerLeads 테이블에 행을 삽입합니다.

파일 연결 관리자

CreateTables.sql은 패키지가 사용하는 SQL을 포함하는 파일에 연결합니다.

OLE DB 연결 관리자

(local).AdventureWorks는 로컬 서버의 AdventureWorks 데이터베이스에 연결합니다.

다음 표에서는 출력 테이블의 데이터를 설명합니다.

테이블 설명

ExistingCustomerLeads

기존 고객과 정확히 일치하는 레코드 및 기존 고객과 텍스트 유사성이 높은 일치 항목 레코드를 포함합니다.

NewCustomerLeads

기존 고객에 해당하는 일치가 없는 레코드를 포함합니다. 목록에 같은 이름을 가진 여러 항목이 포함되어 있거나 특정 이름과 상당히 유사한 이름이 여러 개 있을 경우 한 레코드만 NewCustomerLeads로 전달되며 중복 항목은 DuplicateCustomerLeads로 전달됩니다.

DuplicateCustomerLeads

새 고객의 중복 항목을 포함합니다.

예제 결과

데이터 정리 예제 패키지의 실행 결과를 확인하려면 다음 Transact-SQL 쿼리를 실행합니다.

Select * from AdventureWorks.FuzzyLookupExample.ExistingCustomerLeads
Select * from AdventureWorks.FuzzyLookupExample.NewCustomerLeads
Select * from AdventureWorks.FuzzyLookupExample.DuplicateCustomerLeads

변경 내역

릴리스 내역

2005년 12월 5일

변경된 내용
  • 실행 결과를 반환하는 SELECT 문에서 사용할 스키마 이름을 수정했습니다.