데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

유사 항목 그룹화 – 입력 데이터 중 유사한 항목을 그룹핑하자

 

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

이번 시간에는 [유사 항목 그룹화]에 대해서 알아 보도록 하겠습니다.

 

[유사 항목 조회]는 입력 데이터에 대해 참조 테이블의 데이터와 비교하여 유사하다고 판단되는 항목을 출력하는 작업인 반면 [유사 항목 그룹화]는 입력 데이터들 중 서로 유사하다고 판단되는 항목들로 그룹화 시키는 작업 입니다.

 

[유사 항목 조회] 관련 링크

http://blog.naver.com/jevida/140159740992

 

유사성 임계값에 따라 분류되는 그룹의 수는 달라 집니다.

 

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

 

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

[유사 항목 그룹화]이름을 지정하여 태스크를 생성 합니다.

 

[데이터 흐름]탭에서 그림과 같이 [원본 데이터(OLE DB 원본)]와 [대상 데이터(OLE DB 대상)]을 끌어다 놓습니다. 그 사이 [유사 항목 그룹화]작업을 추가하여 데이터 흐름선을 연결 합니다.

 

[원본 데이터]에서 마우스 오른쪽을 클릭하여 [편집]을 선택 합니다.

 

그림과 같이 편집 창이 나타나면 [OLE DB 연결 관리자]에서 원본 DB의 연결 관리자를 선택하고 해당 테이블을 선택하여 [미리보기]를 이용하여 정상적으로 데이터가 읽어오는지 확인 합니다.

(본 실습에서는 Adventureworks의 Person.Address 테이블 사용)

 

[유사 항목 그룹화]작업에서 마우스 오른쪽을 클릭하여 [편집]을 선택 합니다.

 

아래 그림과 같이 [유사 항목 그룹화 변환 편집기]창이 나타납니다.

[연결 관리자] 탭에서 [OLE DB 연결 관리자] 항목에서 유사 항목 그룹화 작업을 수행 할 때 필요한 임지 저장 테이블의 연결을 지정 합니다. 이때 생성되는 임시 테이블은 입력 데이터를 토큰화 하여 저장하는 인덱스 입니다. 변환 과정에서 자동으로 임시테이블을 생성하고 변환작업을 하므로 운영 DB대신 별도의 임시DB를 사용하는 것이 좋습니다.

 

[열] 탭에서는 유사 항목 그룹화를 수행할 열을 지정하고 세부 설정을 지정할 수 있습니다.

세부 설정은 [유사 항목 조회]의 설정과 비슷 합니다.

 

[숫자]는 입력 데이터에서 숫자에 대한 처리 방식을 지정 합니다.

  • Neither – 앞부분 및 뒷부분의 숫자 모두 분류작업에 특별한 의미가 없음.
  • Leading – 입력 데이터의 앞부분에 나타나는 숫자만 의미가 있음.
  • Trailing – 입력 데이터의 뒷부분에 나타나는 숫자만 의미가 있음.
  • LeadingAndTrailing – 입력 데이터의 앞부분 및 뒷부분의 숫자 모두 의미가 있음.

 

[비교 플래그]는 문자열 데이터를 비교할 때 옵션을 설정 합니다.

 

[고급]탭에서는 임계값 및 토큰값을 설정 할 수 있습니다.

임계값이 높을수록 그룹화 되는 조건이 엄격해 지며 낮을수록 그룹화 되는 수가 작아 집니다.

 

[대상 데이터] 작업에서 마우스 오른쪽을 클릭하여 [편집]을 선택 합니다.

 

[OLE DB 연결 관리자]에서 대상 DB의 연결 관리자를 선택 합니다. 그리고 [새로 만들기] 버튼을 클릭하여 대상 테이블을 새로 만들어 봅니다. (이미 대상 테이블이 존재하는 경우 [테이블 또는 뷰 이름]에서 대상 테이블을 선택 합니다.)

[새로 만들기]를 선택하면 [입력 키열 이름] 과 [출력 키열 이름], [SCORE], 클린젱과 유성 컬럼이 추가 됩니다.

 

[매핑] 탭으로 이동하여 대상이 적절히 매핑 되었는지 확인 합니다.

 

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

늘 그러듯!

녹색 : 정상 실행

빨간색 : 오류 발생

 

패키지 작업이 완료 되었으면 SSMS를 실행하여 데이터를 확인 합니다.

 

데이터를 확인해 보면 [_Key_in]은 순차적으로 부여되는 입력 키 값이며 [_key_out]의 숫자가 [_key_in]의 값과 그룹핑 되었다는 것을 의미 합니다.

 

[InputData]의 값은 입력된 데이터를 나타내며 [InputData_Clean]은 그룹회 되어 분류되는 값을 나타 냅니다.

[_Simiarity_InputData]는 InputData열에 대한 유사성을 나타냅니다. 



강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp



No. Subject Author Date Views
1513 SSIS - 조회 변환 - 참조 테이블을 이용하여 변환하기 jevida(강성욱) 2012.11.30 7616
» SSIS - 유사 항목 그룹화 - 입력 데이터 중 유사한 항목을 그룹핑 하자!! jevida(강성욱) 2012.11.30 7440
1511 SSIS - 유사 항목 조회 - 유사 항목을 조회하여 클렌징을 해보자! jevida(강성욱) 2012.11.30 7446
1510 SSIS - 행 개수 - 작업 행의 개수를 출력하자! [1] jevida(강성욱) 2012.11.30 9783
1509 SSIS - 행 샘플링 / 비율 샘플링 - 데이터를 샘플링 하자! jevida(강성욱) 2012.11.30 7920
1508 특정 DB의 모든 varchar(?)의 collate를 변경해보자 [5] 차주언 2012.11.09 8734
1507 Linked Server Open Query 이용 시 USE 명령어 사용하기 [1] 쓸만한게없네(윤선식) 2012.11.07 50770
1506 SQL Server Analysis Services (SSAS) 2012 쿼리로그 설정 에러시 해결방법 열이 2012.10.19 11152
1505 SQL 공통 BULK INSERT 시 ROWTERMINATOR 지정으로 인한 서버 크래쉬 mcdasa 2012.10.13 10530
1504 인증서를 사용한 프로시저 서명 예제 [1] blahblah 2012.10.11 7315
1503 테이블/쿼리 -> html table blahblah 2012.10.11 9262
1502 SSMS Addin 만들기(1) MessageBox 띄워보기 [3] jn 2012.09.26 10388
1501 SQL Server 2012 평가판에서 정식 버젼으로 업그레이드하기. [1] 쓸만한게없네(윤선식) 2012.09.24 22695
1500 Using the ROLLUP, CUBE and GROUPING SET operator in a GROUP BY Clause [1] 건우아빠 2012.09.14 7804
1499 How to save results of a procedure with more than one result set 건우아빠 2012.09.14 7538
1498 SQL Server Schedule에 대한 이야기 [1] 이스트럭(강동운) 2012.09.06 16600
1497 ISNUMERIC .... [5] 이스트럭(강동운) 2012.09.04 8734
1496 Recover access to a SQL Server instance - NT AUTHORITY\SYSTEM Login [발요약] [1] 열이 2012.09.04 10361
1495 MongoDB Log 파일을 SQL Server로 넣어봅시다. 이스트럭(강동운) 2012.09.04 9005
1494 SQL2012 DBCC LOGINFO and CHECKDB 형식 변경 열이 2012.09.03 23099





XE Login