로그인   |  회원가입  |  사이트맵  |  Contact Us
  아이디 저장하기
 
홈 > SAS Tech & Tip > SAS Programming 활용하기
[SAS 고급] 조건부로 데이터 결합하기(Combining Data Conditionally) 2017.06.18
MYSAS 시샵 373 0
http://www.mysas.co.kr/SAS_tiptech/a_question.asp?B_NO=7333&gotopage=1&cmd=content

[SAS 고급] 조건부로 데이터 결합하기(Combining Data Conditionally)

 

 

안녕하세요 ^^

 

이번 시간은 SQL 프로시저(Procedure)를 이용하여 데이터를 조건부로 결합하는 방법에 대해 알아보도록 하겠습니다.

여러 SET 문을 사용하여 조건부로 데이터를 결합합니다.

 

 

비즈니스 시나리오를 살펴보겠습니다.

▷ 때로는 데이터가 평등한 조건 외의 특정 조건에 따라 결합되어야 합니다.


오리온 스타의 영업 부서는 9월 주문에 대해 TotalRetailPrice(가격)을 유로화 금액으로 변환해야 합니다.

달러에서 유로화로의 전환율은 매주 변경된다고 가정하겠습니다.

 

 


▷ 두 데이터셋이 있습니다.

(1) orion.orderfact 데이터셋은 총 소매 가격(TotalRetailPrice)을 달러로 저장합니다.

(2) orion.rates 데이터셋에는 9월의 매주 전환율이 있습니다.

   - 전환율의 날짜 범위는 배타적이며

   - OrderDate Sdate Edate 사이에 있어야 합니다.(주문일자에 해당하는 주의 전환율을 적용하기 위함)

 

 


SQL 프로시져는 동등성이 아닌 다른 조건에 따라 데이터를 결합하는 데 사용될 수 있습니다.

- Where 절을 이용하여 ‘OrderDate Sdate Edate 사이에 있어야 한다라는 조건을 부여할 수 있습니다.

 

 

▷ 시나리오에 맞는 SQL 이너 조인 결과(SQL Inner Join Results)는 아래와 같습니다.

- 달러 단위의 금액(TotalRetailPrice)이 주문 일자에 적합한 전환율에 적용되어, 유로화 단위 금액(EuroPrice)이 산출된 것을 알 수 있습니다.

 

 


이 시나리오는 DATA STEP을 이용해서 결과를 얻을 수 있습니다.

두 개의 SET 문이 필요하며, 첫 번째 SET문에서는 9월 주문 건만을 읽어옵니다.

두 번째 SET 문은 변환 데이터(환율이 포함된 자료)를 읽습니다.

- orion.orderfact 데이터셋의 주문일자(OrderDate) 변수와

- orion.rates 데이터셋의 환율 시작일자(Sdate) 변수는 정렬되어 있어야 합니다

 

 

do while

- 주문일자가 환율 시작일과 종료일에 포함되지 않을 동안’, do while문이 실행되도록 설정하였습니다.

- , 환율 시작일과 종료일이 주문일자를 포함할 때 Do While문은 종료될 것입니다.

 

do while문이 종료되면, 달러단위 금액에 환율을 곱하여 유로화 단위 금액(EuroPrice)을 생성합니다.

 

 


이상으로 데이터를 조건부로 결합하는 방법에 대해 살펴보았습니다.


감사합니다 ^^


 

 

 

 



 

 
 
 
 
 [SAS 고급] 사용자정의 함수 1(User-Defined Functions 1)
 [SAS 고급] 요약 데이터와 상세 데이터 결합하기2(Combining Summary and Detail Data 2)