[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)을 생성합니다.
이상으로 데이터를 조건부로 결합하는 방법에 대해 살펴보았습니다.
감사합니다 ^^
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.