[SQL 8-3-1] 매크로를 SQL 프로시저에 연결하기 1
(Interfacing PROC SQL with the Macro Language 1)
안녕하세요^^
이번 시간부터 두 번에 걸쳐, 매크로 언어를 SQL 프로시저에 연결(연계/결합)하는 방법에 대해 살펴보겠습니다.
이번 시간에는 SAS 매크로 변수를 생성하고 참조하는 방법에 대해 공부할 것이며
(다음 시간에는 PROC SQL에서 SAS 매크로 변수를 생성하고 사용하는 방법을 살펴볼 것입니다.)
▶ SAS 매크로 변수 (SAS Macro Variable)
▷ 먼저 매크로 변수를 생성한 후 SQL 프로시저에 참조하기까지의 과정을 알아보겠습니다.
정의된 매크로 변수를 사용하여 보고서(report)를 만들기 위해, 아래와 같이 매크로 변수를 생성한 후 SAS Code(코드)를 제출하여야 합니다.
또한 PROC SQL에서, 매크로 변수를 사용하여 쿼리에서 반환한 값을 저장할 수 있는데요.
그런 다음 다른 PROC SQL 문(statement)과 단계(step)에서 매크로 변수를 참조 할 수 있습니다.
▷ SAS Macro 기능 개요
SAS 매크로 언어를 사용하여 다음을 수행할 수 있습니다.
(1) 텍스트(문자)를 포함하는 매크로 변수를 만들고 SAS 프로그램의 어느 곳에서나 참조할 수 있습니다.
- 매크로 변수는 & 기호를 활용하여 참조할 수 있습니다.
(2) 맞춤형(customized) SAS 코드를 생성하는 특수(special) 프로그램(매크로)을 작성할 수 있습니다.
- 특수 매크로는 % 기호를 활용하여 작성할 수 있습니다.
▷ 매크로 변수(Macro Variables)의 저장소 및 유형
SAS 매크로 변수는 “global symbol table”이라고 하는 “메모리 영역”에 저장됩니다.
매크로 변수는 두 가지 유형(type)이 있습니다.
[1] Automatic - 첫 번째 유형은 SAS에 의해 생성되고 업데이트 됩니다. 즉, ‘자동으로 생성되는 매크로 변수’입니다. |
[2] User-defined - 두 번째 유형은 사용자가 직접 정의한 ‘사용자 정의 매크로 변수’입니다.. |
아래 global symbol table(표)에서 볼 수 있듯이, SYSSCP, SYSTIME 등의 이름을 갖는 매크로 변수는 Automatic 매크로 변수에 해당이 됩니다.
DSN 매크로 변수는 사용자가 정의한 매크로 변수임을 알 수 있습니다.
▷ 매크로 변수 생성(create)하고 참조(reference)하기
매크로 변수를 이용하려면 두 단계가 필요합니다.
먼저 다음 방법 중 하나를 사용하여 매크로 변수에 값을 할당합니다.
- [SAS 코드에서] %LET 문(statement)
- [PROC SQL 쿼리에서] INTO 절(clause)
- [SAS 코드에서] CALL SYMPUTX 루틴(routine)
위 세가지 방법 중 하나로 매크로 변수를 생성한 다음, SAS 코드에서 매크로 변수를 참조합니다.
매크로 변수를 참조하면 SAS가 매크로 변수 값을 해석하게 됩니다.
매크로 변수 참조는 매크로 변수명 앞에 &기호를 붙여 참조할 수 있습니다. (¯o-name)
그럼 지금부터 매크로 변수를 생성하고 참조해보겠습니다.
▷ %LET 문을 사용하여 매크로 변수 생성하기
%LET 문의 프로그램 형식은 다음과 같습니다.
매크로 변수에 값을 할당하여 매크로 변수를 생성합니다.
예시로 공부해보겠습니다.
위와 같이, DSN 매크로 변수에 employee_payroll이라는 값을
Bigsalary 매크로 변수에 100000이라는 값을
Libname 매크로 변수에 'ORION'이라는 값을 할당하여 매크로 변수를 생성하고자 합니다.
생성된 매크로 변수들을 매크로 변수 저장소인 global symbol table에서 확인할 수 있습니다.
▷ %LET 문으로 생성한 매크로 변수를 SQL 프로시저에서 참조하기
그럼 생성한 매크로 변수를 SQL 프로시저에서 참조해보겠습니다.
아래 프로그램과 같이 &dsn과 &bigsalary 매크로 변수를 코딩하였습니다.
이 코드가 실행되고 제출되면 첫 번째 매크로 변수 &dsn가 해석됩니다.
그 다음 global symbol table에서 해당 매크로 변수값 employee_payroll을 가져옵니다.
가져온 값은 프로그램의 매크로 변수 자리에 대체됩니다.
(매크로 변수 &bigsalary도 같은 과정을 거치며, 각 과정은 아래 그림에서 확인할 수 있습니다.)
=
=
▷ 인용 부호(“”) 내에서 매크로 변수 참조하기
인용 부호 내에서 텍스트 문자열(text string) 매크로 변수를 참조하기 위해서는, 쌍따옴표(“”) 내에 참조를 하여야 합니다.
이를 이해하기 위해서 San Diego 텍스트 문자열 매크로 변수 city를 고려하겠습니다.
global symbol table에서 매크로 변수 city에 할당된 값이 San Diego임을 확인할 수 있습니다.
=
위 코드에서 &city를 기입한 경우와 직접 San Diego 문자열을 기입한 경우의 결과는 같았으며
매크로 변수를 참조한 경우, &city를 기입하여 할당된 San Diego 문자열을 가져온 것을 볼 수 있습니다.
이번에는 따옴표(‘’)로 묶인 텍스트 문자열(text string) 매크로 변수도 마찬가지 방법으로 참조해보겠습니다.
San Diego 문자열을 따옴표(‘’)로 묶어 city라는 매크로 변수를 생성합니다.
global symbol table에서 매크로 변수 city에 할당된 값이 ‘San Diego’임을 확인할 수 있습니다
쌍따옴표(“”) 내에 city 매크로 변수를 참조하면 global symbol table에서 할당된 값을 가져옵니다.
즉, 위와 같은 코드를 입력한 경우와 동일한 결과를 가져올 것입니다.
그러나 문자열 매크로 변수를 쌍따옴표(“”)가 아닌 따옴표(‘’) 내에서 참조한다면 어떻게 될까요?
결과에서 볼 수 있듯이, 매크로 변수 city를 가 적절히 참조되지 않습니다.
이상 SAS 매크로 변수를 생성하고 참조하는 방법에 대해 살펴보았습니다.
감사합니다 ^^
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.