로그인   |  회원가입  |  사이트맵  |  Contact Us
  아이디 저장하기
 
홈 > SAS Tech & Tip > SAS Programming 활용하기
[SAS 고급] 데이터스텝의 Merge와 SQL Joins 프로시저 (DATA Step Merges and SQL Procedure Joins) 2017.06.18
MYSAS 시샵 282 0
http://www.mysas.co.kr/SAS_tiptech/a_question.asp?b_no=7329&gotopage=1&con=subject&keyword=&cmd=content&bd_no=05&gubun=

[SAS 고급] 데이터스텝의 MergeSQL Joins 프로시저 (DATA Step Merges and SQL Procedure Joins)

 


안녕하세요^^


이번 시간에는 공부할 내용은 다음과 같습니다.

  • DATA STEPMERGE문장을 사용하여 여러 개의 SAS 데이터셋을 결합하는 방법

  • SQL 프로시저를 사용하여 SAS 데이터셋을 공통의 변수 없이 JOIN하는 방법

  • DATA STEPMERGEPROC SQL의 결과의 차이

 

▶ 테이블 조회(Table Lookup)를 수행하기 위해 데이터를 가로로 결합하는 방법입니다

 


DATA STEPMERGE PROC SQL joinkey column이나 특정 조건에 기초하여 행(row)을 일치시키는 방법으로 데이터셋을 가로로 결합합니다.

 

 


DATA STEP은 데이터를 가로로 결합하는 여러가지 방법(MERGE, SET, UPDATE, MODIFY )을 제공합니다. 

 

 

▷ 또한, SQL에도 몇 가지 타입의 SQL JOIN 방법이 있습니다. 

 


 

 

DATA STEPMerge에서, BY 변수는 Lookup Key로 지정합니다.

SQL JOIN에서, WHERE 또는 ON 절의 변수가 Lookup Key가 됩니다.

▷ 주의해야할 사항은, DATA STEPMerge는 데이터셋이 Key columns으로 정렬되어있어야 합니다.


 

▶ 앞선 자료들에서 많이 다루었듯이, DATA STEPmerge는 다음의 예시와 같이 간단하게 작업할 수 있습니다.

 ▷ 예시는 orion.country 데이터와 orion.continent 데이터를 ContinentID변수를 기준으로 가로결합하는 문제입니다.

 

 

▷ 먼저, PROC SORT 프로시저를 사용하여 데이터를 정렬합니다. 참고로, 가로 결합할 두 데이터셋이 Key columns에 대해 모두 정렬되어있어야 합니다.

DATA STEPmerge 문장을 사용하고, Key columnsBY 문장에 지정합니다, 

 

 

▶ 이제 DATA STEPMergePROC SQLJOIN을 비교하며 살펴보겠습니다.

 

 

 

 

DATA STEPMergePROC SQLinner join은 같은 결과를 생성할 수 있습니다.

 1:1 매칭

 Key가 되는 columns의 값이 1:1로 매칭되는 경우의 가로결합입니다.


 

 

 

 

▷ 데이터 one twoX변수를 기준으로 가로 결합하여 dsthree 데이터셋을 만드는 문장입니다.

 

 

▷ 데이터 onetwoX변수를 기준으로 가로 결합하여 sqlthree 데이터셋을 만드는 문장입니다.

PROC SQLWHERE문장 또는 ON 절에 데이터셋1.변수명1=데이터셋2.변수명2로 지정하면, 변수명이 다른 경우에도 정렬없이 가로 결합을 진행할 수 있습니다. 

 

 

▷ 두 방법으로 만든 데이터셋의 결과는 같습니다. 

 1:M 매칭

 Key가 되는 columns의 값이 1:M으로 매칭되는 경우의 가로결합입니다.


 

 

 

▷ 데이터 one twoX변수를 기준으로 가로 결합하여 dsthree 데이터셋을 만드는 문장입니다. 

 

 

▷ 데이터 onetwoX변수를 기준으로 가로 결합하여 sqlthree 데이터셋을 만드는 문장입니다. 

 

 

▷ 두 방법으로 만든 데이터셋의 결과는 같습니다. 

 M:M 매칭

 Key가 되는 columns의 값이 M:M으로 매칭되는 경우의 가로결합입니다.


 

 

 

▷ 데이터 onetwoX변수를 기준으로 가로 결합하여 dsthree 데이터셋을 만드는 문장입니다. 

 

 

▷ 데이터 onetwoX변수를 기준으로 가로 결합하여 sqlthree 데이터셋을 만드는 문장입니다. 

 

 

DATA STEP merge는 데이터 one 기준 two를 가로 결합하는 방법이므로, 데이터셋 one의 값에 매칭되는 데이터 two Z 변수가 추가됩니다. , Key columnX이므로, Z 변수값은 데이터의 순서대로 매칭됩니다.

SQLJOIN은 데이터셋 one X값과 twoX이 같을 때, YZ의 모든 조합으로 데이터가 매칭됩니다. 따라서 데이터셋 one X=1, twoX=1일 때, (X,Y,Z) = (1,a,f), (1,a,r), (1,c,f), (1,c,r)이 매칭되며, X=2일 때 (2,b,g)가 매칭됩니다. 

 매칭이 안될 때

  Key가 되는 columns의 값이 매칭되지 않는 경우 가로결합입니다.


 

 

 

▷ 데이터 one twoX변수를 기준으로 가로 결합하여 dsthree 데이터셋을 만드는 문장입니다. 

 

 

▷ 데이터 onetwoX변수를 기준으로 가로 결합하여 sqlthree 데이터셋을 만드는 문장입니다. 

 

 

DATA STEPmerge에서, X를 기준으로 가로 결합하면, X=1, X=3인 경우ㅅtwo 데이터의 Z 값이 매칭됩니다. 그 외의 값에는 결측값으로 생성됩니다.

SQLJOIN은 데이터셋 onetwoX가 같은 경우만 결과로 생성하므로, X=1, 3 일 때의 매칭된 결과를 보여줍니다. 이 결과는 SQLInner join을 의미합니다.

 

 

 

▶ 만약 두 방법의 결과를 같게 만들고자 한다면, SQLJOIN에서 Inner join 대신 full outer join을 사용할 수 있습니다. 

 

 


 

 

 

 

이상으로 DATA STEPMERGEPROC SQLJOIN방법에 대해 알아보았습니다.


감사합니다^^

 

 
 
 
 
 [SAS 고급] 인덱스를 사용하는 데이터 결합 (Using an Index to Combine Data)
 [SAS 고급] DATA Step Hiter Object (2)