SAS 면접 질문 및 답변 상위 50개(2026)

SAS 면접 질문과 답변

SAS 면접 준비는 집중적인 준비가 필요하며, 특히 SAS 면접에서 진정으로 중요한 것이 무엇인지 이해하는 것이 중요합니다. 이러한 평가는 문제 해결 능력, 분석적 사고, 그리고 현대 데이터 환경에서의 실질적인 연관성을 보여줍니다.

SAS 직무는 분석, 보고, 비즈니스 인텔리전스 등 다양한 분야에서 기회를 제공하며, 기술적 경험과 도메인 전문 지식이 실질적인 영향력을 발휘합니다. 이 분야 전문가들은 뛰어난 분석 능력, 정교한 기술, 그리고 신입, 중견, 경력 지원자 모두가 다양한 기술적 기대치를 충족할 수 있도록 돕는 일반적이고 심도 있는 질문과 답변을 통해 구축된 자신감을 중요하게 생각합니다.
자세히보기 ...

👉 무료 PDF 다운로드: SAS 면접 질문 및 답변

SAS 면접 질문과 답변

1) SAS는 내부적으로 DATA 단계를 어떻게 처리하며, 어떤 수명 주기 단계를 거칩니까?

SAS의 DATA 단계는 컴파일 단계와 실행 단계라는 두 가지 주요 단계로 구성된 명확하게 정의된 수명 주기를 통해 작동합니다. 이 수명 주기를 이해하는 것은 SAS가 데이터 세트를 구축하고, 구문을 감지하고, 변수 속성을 할당하고, 반복을 관리하는 방식을 설명하기 때문에 매우 중요합니다. 컴파일 과정에서 SAS는 구문을 검사하고, 프로그램 데이터 벡터(PDV)를 생성하고, 출력 데이터 세트의 설명자 부분을 준비합니다. 실행 과정에서 SAS는 데이터를 읽고, PDV 값을 채우고, 조건을 평가하고, 출력 데이터 세트에 관측값을 기록합니다.

수명 주기 단계:

형질 예시
편집 PDV를 생성하고, 변수 길이를 할당하고, 누락된 변수를 식별합니다. 세미콜론이 없으면 컴파일 타임 오류가 발생합니다.
실행 줄별로 명령문을 실행하고 출력 데이터를 작성합니다. SET sales;
profit = revenue – cost;

이 라이프사이클은 디버깅을 최적화하고 데이터 처리 성능을 향상시키는 데 도움이 됩니다.


2) SAS에서 데이터 세트를 결합하는 다양한 방법은 무엇이며, 각 방법은 언제 사용해야 합니까?

SAS는 데이터 세트를 결합하는 다양한 기법을 제공하며, 각 기법은 데이터 구조, 데이터 세트 간의 관계 및 성능 요구 사항에 따라 고유한 이점을 제공합니다. 병합, 추가, 연결, 인터리빙 및 SQL 조인은 각각 다른 문제를 해결합니다. 적절한 방법을 선택하면 정확도가 향상되고 의도치 않은 중복을 방지할 수 있습니다.

주요 방법:

  • 병합(데이터 단계): 데이터 세트가 공통 BY 변수를 공유할 때 사용합니다. 일대일 또는 일대다 관계에 적합합니다.
  • SET (연결): 데이터 세트를 수직으로 쌓습니다. 변수는 같지만 관측값이 다를 때 사용합니다.
  • 프로시저 SQL 조인: 완전한 유연성을 위해 왼쪽, 오른쪽, 전체 및 내부 조인을 사용합니다.
  • 인터리빙: 정렬 순서를 유지하면서 여러 데이터 세트를 결합합니다.

예: Customer_ID로 판매 및 고객을 병합하면 보고 및 분석을 위한 풍부한 프로필을 만들 수 있습니다.


3) 예를 들어 SAS informat과 SAS format의 차이점을 설명하세요.

SAS에서 Informat과 Format은 완전히 다른 역할을 합니다. Informat은 SAS에 데이터를 읽는 방법, 형식은 SAS에 알려줍니다. 데이터를 표시하는 방법이러한 특성은 데이터가 해석되는지, 아니면 단순히 다르게 표현되는지를 결정합니다. 날짜, 소수, 화폐 가치, 문자 변수를 올바르게 처리하려면 이러한 차이점을 기억하는 것이 필수적입니다.

비교표 :

특색 정보 형성
목적 외부 데이터 읽기 내부 데이터 표시
적용된 입력 단계 출력 단계
예시 input date mmddyy10.; format date date9.;

예: 데이터가 포함되어 있는 경우 20250114, 정보 yymmdd8. 이를 SAS 날짜 값으로 변환합니다. 형식은 다음과 같습니다. date9. 그런 다음 다음과 같이 표시합니다. 14JAN2025정보가 없다면 SAS는 날짜를 완전히 잘못 읽었을 것입니다.


4) SAS 성능에 영향을 미치는 요소는 무엇이며, 느리게 실행되는 프로그램을 최적화하려면 어떻게 해야 합니까?

SAS의 성능은 코드 효율성, 하드웨어 리소스, 데이터셋 크기, 그리고 인덱스 사용에 따라 달라집니다. 느린 프로그램을 최적화하려면 DATA step과 PROC step 요소를 모두 평가해야 합니다. 비효율적인 조인, 과도한 정렬, 불필요한 변수 또는 인덱싱 부족은 종종 병목 현상을 유발합니다.

최적화 전략:

  1. 한계 변수: KEEP= or DROP= 메모리 사용량을 줄이려면.
  2. 조인 최적화: 인덱스된 BY 변수나 해시 조인이 있는 SQL을 사용합니다.
  3. 불필요한 종류를 피하세요: 정렬은 CPU를 많이 사용하므로 필요할 때만 정렬합니다.
  4. IF 대신 WHERE를 사용하세요: WHERE는 PDV 주기의 초기 단계에서 데이터를 필터링합니다.
  5. 해시 객체 활용: MERGE에 비해 조회에 효율적입니다.

예: 10만 개의 행이 있는 데이터 세트를 인덱싱하면 처리 속도가 크게 향상되어 병합 시간이 몇 분에서 몇 초로 단축됩니다.


5) IF 대신 SAS WHERE 문을 사용해야 하는 경우는 언제이고, 어떤 장점이 있습니까?

WHERE 문은 데이터 검색 중에 처리되는 반면, IF 문은 데이터가 PDV에 입력된 후에 실행됩니다. 즉, WHERE 문은 데이터를 더 일찍 필터링하여 I/O를 줄이고 성능을 향상시킬 수 있습니다. 또한 WHERE 문은 인덱싱을 지원하여 대용량 데이터 세트에 대한 더 빠른 부분 집합 처리를 제공합니다.

WHERE의 장점:

  • PDV에 로드하기 전에 데이터를 필터링합니다.
  • 더 빠른 선택을 위한 인덱스 지원
  • DATA 단계와 PROC 단계 모두에서 작동합니다.
  • SQL과 유사한 연산자를 처리합니다.

예:

set sales(where=(region='EUROPE'));

이 버전은 유럽 레코드만 로드하는 반면, IF를 사용하면 먼저 모든 데이터를 로드한 다음 필터링하므로 메모리와 시간이 낭비됩니다.


6) 숫자형, 문자형, 자동형, 임시형 등 다양한 SAS 변수 유형을 설명하세요.

SAS 변수는 그 특성과 SAS에서 변수를 사용하는 방식에 따라 분류됩니다. 숫자형 및 문자형 변수는 사용자 정의 데이터를 저장하지만, SAS는 내부 처리를 위해 자동 변수와 임시 변수도 생성합니다. 이러한 유형의 변수를 이해하면 효과적인 데이터 조작이 가능하고 개발자는 디버깅을 더 쉽게 수행할 수 있습니다.

SAS 변수의 유형:

  • 숫자: 실수를 저장합니다. 기본 길이는 8바이트입니다.
  • 캐릭터 : 문자열을 저장합니다. 길이는 사용자가 정의하거나 추론합니다.
  • 자동 변수: SAS에서 생성한 것과 같은 _N_ (반복 카운터) 및 _ERROR_.
  • 임시 변수: 데이터 세트에 기록되지 않고 LENGTH 또는 RETAIN을 사용하여 생성되었습니다.

예: _N_ 일반적으로 배열 초기화와 같은 작업에서 첫 번째 관찰만 처리하는 데 사용됩니다.


7) PROC MEANS와 PROC SUMMARY의 차이점은 무엇인가요? 예를 들어 설명하세요.

두 프로시저 모두 기술 통계량을 계산하지만, PROC MEANS는 기본적으로 결과를 표시하는 반면, PROC SUMMARY는 명시적인 OUTPUT 문을 요구합니다. 이러한 기본 동작 방식의 차이로 인해 PROC SUMMARY는 인쇄된 출력 없이 데이터 집합을 생성하는 데 더 적합합니다.

비교:

특색 프로세스 수단 프로세스 요약
산출 기본적으로 인쇄됨 인쇄된 출력물이 없습니다
적용 사례 빠른 통계 보기 요약 데이터 세트 생성

예:

  • proc means data=sales; var revenue; run; shows results immediately.
  • proc summary data=sales; var revenue; output out=summary_stats sum=Total; run; 데이터 세트만 생성합니다.

8) SAS 인덱스는 어떻게 작동하며, 대규모 데이터 세트에 대해 어떤 이점을 제공합니까?

SAS의 인덱스는 마치 책의 색인처럼 작동합니다. 전체 데이터셋을 검색할 필요 없이 검색 속도를 높여줍니다. 주요 변수를 기준으로 관측값에 대한 정렬된 포인터를 저장합니다. 인덱스는 특히 대용량 데이터셋과 반복적인 조회에 유용합니다.

이점:

  • 더 빠른 WHERE 처리
  • 향상된 조인 성능
  • I/O 작업 감소
  • BY 문을 사용한 MERGE 작업 개선

예: 인덱스 생성 Customer_ID 15만 개의 행으로 구성된 테이블에서 SAS는 특정 고객 레코드를 거의 즉시 검색할 수 있는 반면, 인덱싱을 사용하지 않으면 전체 데이터 세트를 순차적으로 읽어야 합니다.


9) SAS의 해시 객체는 기존 MERGE 문보다 더 나은 점이 있습니까? 예를 들어 설명해 보세요.

해시 객체는 메모리 내 조회 메커니즘을 제공하여 다대일 조회에서 MERGE보다 훨씬 빠릅니다. 정렬을 피하고, I/O를 줄이며, 대용량 조회 테이블을 효율적으로 처리합니다. 수명 주기는 DATA 단계에서만 존재하므로 임시 조인에 적합합니다.

장점:

  • 데이터를 정렬할 필요가 없습니다
  • 더 빠른 조회
  • 차원 스타일 데이터 세트에 효율적입니다.
  • 메모리 기반으로 디스크 I/O 감소

예: 해시 객체를 사용하여 고객 마스터 데이터(300만 행)와 거래(50만 행)를 일치시키면 정렬된 데이터와 여러 단계가 필요한 MERGE에 비해 성능이 크게 향상됩니다.


10) SAS 함수에는 어떤 유형이 있고, 실제 상황에서는 어떻게 사용됩니까?

SAS는 수학 함수, 문자 함수, 날짜/시간 함수, 통계 함수, 특수 함수 등 용도별로 분류된 풍부한 함수 라이브러리를 제공합니다. 이러한 함수는 데이터 처리 효율성, 정확성 및 가독성을 향상시킵니다.

주요 유형:

  • 문자 기능: SCAN, UPCASE, SUBSTR 텍스트 처리를 위해
  • 날짜 함수: INTNX, INTCK, MDY 날짜 조작을 위해
  • 수학 함수: ROUND, SUM, ABS
  • 통계 함수: MEAN, STD, VAR

예: 비즈니스 분석가는 날짜 함수를 사용하여 고객 연령을 계산할 수 있습니다. INTCK('year', BirthDate, Today())정확한 인구통계적 세분화를 보장합니다.


11) SAS에서 RETAIN 문은 어떻게 작동하며, 어떤 실질적인 이점을 제공합니까?

RETAIN 문은 SAS가 각 DATA 단계 반복 시작 시 변수 값을 누락 상태로 재설정하지 않도록 지시합니다. 일반적으로 SAS는 각 루프 동안 변수를 누락 상태로 초기화하지만, RETAIN은 이전 반복의 값을 유지합니다. 이 기능은 누적 계산, 순차 번호 매기기 및 값 이월 시 필수적입니다. RETAIN은 SUM 문을 사용할 때도 암시적으로 사용됩니다. (var + expression).

이점:

  • 누적 합계를 유지합니다
  • 이전에 누락되지 않은 값을 보존합니다.
  • 불필요한 임시 변수를 방지합니다.
  • 룩백 로직을 구현하는 데 도움이 됩니다.

예:

retain Total_Sales 0;
Total_Sales + Sales;

이 코드는 외부 루프 없이 관찰 결과에 대한 누적 총계를 작성합니다.


12) SAS에서 DATA 단계인 MERGE와 PROC SQL JOIN의 차이점은 무엇입니까? 각 단계가 더 선호되는 상황을 설명하십시오.

MERGE는 미리 정렬된 데이터 세트를 필요로 하며 BY 변수를 사용하는 반면, SQL JOIN은 정렬이 필요 없고 더 복잡한 관계를 관리할 수 있습니다. MERGE는 데이터 세트가 정렬되고 정리된 경우 일대일 또는 일대다 관계에 효율적입니다. SQL JOIN은 더 유연하여 조인 자체 내에서 고급 조건, 표현식 및 필터링과 함께 내부 조인, 왼쪽 조인, 오른쪽 조인 및 전체 조인을 지원합니다.

MERGE를 사용해야 하는 경우:

  • 데이터는 이미 정렬되어 있습니다
  • BY 변수는 완벽하게 일치합니다
  • 결정론적 SAS DATA 단계 동작을 원합니다.

SQL JOIN을 사용해야 하는 경우:

  • 외부 조인이 필요합니다
  • 데이터 세트에 누락되었거나 일치하지 않는 값이 포함되어 있습니다.
  • 복잡한 조인 로직이 필요합니다.

예: 고객 인구 통계 세부 정보로 판매 데이터 세트를 강화할 때는 편의성과 가독성을 위해 SQL을 사용하는 경우가 많습니다.


13) SAS 자동 변수란 무엇이며 어떻게 사용됩니까? N ERROR 일반적으로 사용되는?

자동 변수는 DATA 스텝 실행 중에 SAS 내부에서 생성되고 관리됩니다. 데이터셋에 기록되지는 않지만, SAS가 처리 주기와 오류를 추적하는 데 도움이 됩니다. _N_ DATA 단계 반복 횟수를 계산하므로 조건부 실행이나 특정 행 디버깅에 유용합니다. _ERROR_ SAS에서 실행 오류가 발생하면 1이 되는 이진 지표입니다.

사용 사례:

  • 첫 번째 관찰에 대해서만 초기화 코드를 실행합니다. if _N_=1 then put 'Start';
  • 문제가 있는 행을 캡처하려면 다음을 사용하세요. _ERROR_ 품질 검사를 위해.

예: _N_ 해시 객체를 한 번만 로드하여 최적의 메모리 사용을 보장하는 데 자주 사용됩니다.


14) 다양한 유형의 SAS 배열을 설명하고 그것들이 어떻게 데이터 변환을 단순화하는지 설명하세요.

SAS 배열은 관련 변수를 단일 이름으로 그룹화하여 반복적인 처리를 가능하게 하여 반복적인 코드를 줄입니다. 배열은 새 변수를 생성하지 않지만 기존 변수를 참조하는 구조화된 방법을 제공합니다. 가장 일반적인 유형은 다음과 같습니다. 숫자형 배열, 문자 배열글렌데일 임시 배열임시 배열은 DATA 단계에서만 존재하며 출력 데이터 세트에는 나타나지 않습니다.

이점:

  • 반복 변수(예: 월별 값) 처리 간소화
  • 코드 중복을 최소화하기 위해 루프를 활성화합니다.
  • 변수 그룹 간 조건부 변환 지원

예: 여러 시험 점수를 백분율로 변환하려면 10개의 별도 명령문을 작성하는 대신 배열에 DO 루프를 사용하면 됩니다.


15) SAS에는 어떤 유형의 누락값이 존재하며, SAS는 정렬 및 계산 중에 이를 어떻게 처리합니까?

SAS는 여러 종류의 결측값을 지원합니다. "."로 표현되는 일반 숫자 결측값과 ".A"부터 ".Z"까지의 특수 숫자 결측값입니다. 모든 결측 문자 값은 공백으로 표현됩니다. 이러한 다양한 유형을 통해 분석가는 "해당 없음" 또는 "답변 거부"와 같은 결측 범주를 인코딩할 수 있습니다.

SAS는 정렬 과정에서 모든 누락된 숫자 값을 실제 숫자보다 먼저 배치합니다. 계산 과정에서 누락된 값은 일반적으로 전파되어 다음과 같은 함수를 사용하여 명시적으로 처리하지 않으면 결과가 누락됩니다. SUM() 누락된 값을 무시합니다.

예: 설문조사를 분석할 때, .A "응답 없음"을 나타낼 수도 있습니다. .B "시스템 오류"를 나타낼 수 있습니다.


16) BY 그룹 처리와 FIRST./LAST. 변수는 어떤 이점을 제공합니까?

BY-그룹 처리를 통해 SAS는 정렬된 데이터를 그룹화된 세그먼트로 처리하여 누적 요약, 그룹 수준 변환, 세그먼트별 보고와 같은 강력하고 효율적인 작업을 수행할 수 있습니다. FIRST.variable과 LAST.variable은 BY-그룹 처리 중에 자동으로 생성되는 임시 지표로, 각 그룹의 시작 및 종료 관측값을 식별합니다.

장점:

  • 그룹 총계 계산을 간소화합니다.
  • 계층적 데이터 처리를 가능하게 합니다.
  • 다중 행 그룹에 대한 수동 논리를 줄입니다.
  • 시계열 변환을 위한 더 깨끗한 코드 지원

시나리오 예 : 고객당 총 수익을 계산하려면 다음 값까지 누적할 수 있습니다. LAST.Customer_ID 요약 데이터 세트에 대한 쓰기 작업을 트리거합니다.


17) PROC TRANSPOSE는 어떻게 작동하며, 배열을 재구성하는 것보다 전치를 선호하는 경우는 언제인가요?

PROC TRANSPOSE는 변수를 관측값으로 회전시키거나 관측값을 변수로 회전시켜 데이터를 재구성합니다. 분석, 보고 또는 다른 시스템과의 병합을 위해 데이터를 피벗팅해야 할 때 이상적입니다. 주요 이점은 자동화입니다. PROC TRANSPOSE는 동적인 변수 개수를 처리하고 알려지지 않았거나 변화하는 스키마 구조에도 잘 작동합니다.

사용시기 :

  • 넓은 데이터를 긴 형식으로 변환하거나 그 반대로 변환해야 합니다.
  • 변수 수가 크거나 예측할 수 없습니다.
  • 소스 데이터 세트는 자주 변경됩니다.

변수 이름을 알고 변환 논리를 효율적으로 반복할 수 있는 경우 배열이 더 좋습니다.

예: 분기별 매출 변수(Q1, Q2, Q3, Q4)를 시계열 분석을 위한 수직 구조로 변환합니다.


18) SAS 매크로 사용의 장점과 단점은 무엇입니까? 실제 사례를 제시해 보세요.

SAS 매크로는 동적 코드를 생성하여 반복적인 작업을 자동화하고 생산성과 일관성을 향상시킵니다. 또한, 로직을 매개변수화하고, 여러 프로시저를 생성하고, 재사용 가능한 유틸리티를 만드는 데 도움이 됩니다. 하지만 매크로를 잘못 작성하면 복잡성과 디버깅 문제를 야기할 수 있습니다.

장점과 단점 표:

장점 단점
반복적인 코드를 자동화합니다 디버깅은 어려울 수 있습니다
유지관리성이 향상됩니다 프로그램 흐름을 모호하게 만들 수 있습니다
동적 논리 생성을 활성화합니다. 과도한 사용은 코드를 읽을 수 없게 만듭니다.
수동 오류 감소 매크로 언어 학습이 필요합니다

예: 단일 템플릿을 사용하여 여러 지역에 대한 주간 보고서를 생성하는 매크로는 개발 시간을 대폭 줄여줍니다.


19) 매크로 변수와 DATA 단계 변수의 차이점을 예를 들어 설명해 주시겠습니까?

매크로 변수는 컴파일 과정에서 확인되어 텍스트 대체 도구로 작동하는 반면, DATA 스텝 변수는 DATA 스텝 실행 중에 존재하며 실제 데이터 값을 저장합니다. 매크로 변수는 명시적으로 전달되거나 참조되지 않는 한 PDV와 직접 상호 작용할 수 없습니다.

주요 차이점:

  • 매크로: 글로벌 또는 로컬, 실행 전에 평가됨
  • DATA 단계: 실행 중 행별로 생성됨
  • 매크로 변수는 숫자 유형을 저장하지 않고 텍스트를 저장합니다.
  • DATA 변수는 숫자형 또는 문자형일 수 있습니다.

예:

%let threshold = 100;
if sales > &threshold then flag='High';

여기서 매크로 변수는 값 100을 삽입하지만 비교 자체는 실행 시간에 발생합니다.


20) PROC SQL의 조인 유형은 무엇이며, 실제 사용 시 어떻게 다릅니까?

PROC SQL은 내부 조인, 왼쪽 조인, 오른쪽 조인, 전체 조인을 포함한 여러 조인 유형을 지원하며, 각 조인은 고유한 데이터 처리 과제를 해결합니다. 내부 조인은 일치하는 레코드를 유지하는 반면, 외부 조인은 한쪽 또는 양쪽 데이터 세트에서 일치하지 않는 행을 유지합니다. 전체 조인은 불일치를 강조하기 때문에 데이터 조정에 특히 효과적입니다.

조인 유형 비교:

조인 유형 형질 사용 사례 예시
안의 일치하는 행만 유효한 거래가 있는 고객
왼쪽 모두 왼쪽 + 일치하는 오른쪽 구매하지 않은 고객도 모두 유지
권리 오른쪽 + 왼쪽 매칭 고객 정보 없이도 모든 거래를 보관하세요
FULL 모든 행, 일치 여부 시스템 간 데이터 검증

예: CRM과 청구 시스템 간의 판매 감사는 일반적으로 FULL JOIN을 사용하여 불일치 사항을 식별합니다.


21) SAS는 문자-숫자 변환과 숫자-문자 변환을 어떻게 처리하며, 일반적으로 어떤 문제가 발생합니까?

SAS는 문자가 필요한 곳에 숫자 값이 사용되거나 그 반대로 숫자 값이 사용될 때 자동으로 암시적 변환을 수행하지만 이로 인해 경고나 잘못된 값이 발생할 수 있습니다. 다음을 사용한 명시적 변환 PUT() INPUT() 정확한 제어를 제공하고 모호성을 방지합니다. 문자-숫자 변환에는 정보(informat)가 필요하고, 숫자-문자 변환에는 형식(format)이 필요합니다.

일반적인 문제로는 길이 불일치, 잘못된 정보, 그리고 잘못된 데이터로 인한 누락된 값 생성 등이 있습니다. 암시적 변환은 항상 로그에 NOTE를 생성하여 잠재적인 데이터 품질 문제를 나타냅니다.

예:

  • 문자 → 숫자로 변환: num = input(char_date, yymmdd8.);
  • 숫자형 → 문자형으로 변환: char = put(amount, dollar12.2);

22) SAS 처리에서 프로그램 데이터 벡터(PDV)는 어떤 역할을 하며, 이를 이해하면 프로그램 설계를 어떻게 개선할 수 있습니까?

PDV는 SAS가 DATA 단계 실행 중 관측값을 생성하는 데 사용하는 메모리 영역 구조입니다. 각 반복에 대한 변수 값, 자동 변수 및 임시 변수를 저장합니다. RETAIN 또는 SUM 명령문과 같은 메커니즘을 통해 변수가 유지되지 않는 한, PDV는 각 루프 시작 시 재설정됩니다.

PDV 동작을 이해하면 누락된 값이 발생하는 이유, 배열의 작동 방식, 그리고 FIRST./LAST. 논리가 트리거되는 방식을 명확하게 알 수 있습니다. 또한 개발자가 메모리 사용량을 예측하고 불필요한 변수 생성을 방지할 수 있으므로 성능 튜닝에도 도움이 됩니다.

예: 의도치 않게 변수 값을 유지하는 일은 종종 SUM 문을 사용할 때 발생하는데, SAS는 RETAIN을 암묵적으로 적용합니다.


23) 어떤 유형의 SAS 인덱스가 존재하며, 단순 인덱스와 복합 인덱스 중에서 어떻게 선택해야 합니까?

SAS 지원 간편한 설치 합성물 인덱스. 단순 인덱스는 단일 변수에 대해 생성되는 반면, 복합 인덱스는 두 개 이상의 변수를 결합합니다. 인덱스 선택은 쿼리 패턴에 따라 달라집니다. 대부분의 쿼리가 다음과 같은 단일 키를 사용하는 경우 Customer_ID간단한 인덱스로 충분합니다. 쿼리가 일반적으로 다음과 같은 여러 변수를 필터링하는 경우 State Category그러면 복합 인덱스를 사용하면 성능이 향상됩니다.

비교표 :

지수 유형 형질 최상의 사용 사례
단순, 간단, 편리 하나의 변수 고유 식별자 검색
합성물 여러 변수 다중 조건 WHERE 필터

예: 복합 인덱스 (Region, Product) 지역 전체에서 제품 분석을 가속화합니다.


24) PROC FORMAT을 사용하는 이점과 사용자 정의 형식이 해석성을 어떻게 향상시키는지 설명하세요.

PROC FORMAT을 사용하면 개발자가 코딩된 값에 의미 있는 레이블을 지정하여 보고서의 가독성, 프로시저 간 일관성, 데이터 해석 제어를 향상시킬 수 있습니다. 사용자 정의 형식은 조회 테이블처럼 작동하며 조인이나 CASE 논리의 필요성을 줄여줍니다. 또한, 데이터세트와 프로시저 간에 형식을 재사용할 수 있어 유지 관리가 용이해집니다.

예:

형식 만들기 1=Male 2=Female PROC FREQ 또는 PROC REPORT를 사용하면 설명 라벨을 자동으로 표시할 수 있습니다. 마찬가지로, 세분화 분석을 위해 사용자 지정 값 형식을 사용하여 소득 범위를 버킷으로 분류할 수 있습니다.

가장 큰 장점은 기본 데이터는 변경되지 않은 채 표시되는 데이터를 더 해석하기 쉬워진다는 것입니다.


25) PROC SORT는 내부적으로 어떻게 작동하며, 어떤 옵션이 대규모 데이터 세트 정렬을 최적화하는 데 도움이 됩니까?

PROC SORT는 하나 이상의 변수를 기준으로 관측값을 재정렬하지만, 특히 대용량 데이터셋의 경우 리소스 사용량이 많을 수 있습니다. SAS는 내부적으로 임시 유틸리티 파일을 생성하고, 정렬된 청크를 병합한 후, 그 결과를 출력 데이터셋에 기록합니다.

성능은 다음을 통해 개선될 수 있습니다.

  • 사용 SORTEDBY= 메타데이터 최적화를 위해
  • 적용 NODUPKEY or NODUPREC 중복을 효율적으로 제거하려면
  • 필요한 변수만 정렬 KEEP= or DROP=
  • 일부 작업에 대해 물리적 정렬 대신 인덱스 사용

예: 데이터 세트의 100개 필드 전체를 읽는 대신 필요한 3개의 변수만 읽으면 50만 개의 행을 정렬하는 속도가 빨라집니다.


26) SAS에서 LENGTH 문은 왜 중요하며, 잘못된 길이 지정은 데이터에 어떤 영향을 미칩니까?

LENGTH 문은 문자 변수의 저장 크기를 결정하고 메모리 사용량, 잘림 위험 및 결과 정확도에 영향을 미칩니다. SAS는 첫 번째 할당을 기준으로 문자 길이를 기본값으로 설정하므로, 나중에 더 긴 값이 나타나면 잘림이 발생할 수 있습니다. 명시적인 LENGTH 문은 이러한 문제를 방지하고 DATA 단계 전체의 일관성을 보장합니다.

길이가 올바르지 않으면 문자열이 잘리거나, 범주가 잘못 분류되거나, 키가 일치하지 않아 조인에서 예상치 못한 결과가 발생할 수 있습니다.

예: 설정 length ProductName $50; 데이터 세트의 첫 번째 값이 더 짧더라도 전체 이름이 저장되도록 보장합니다.


27) 매크로 처리에서 %PUT, %EVAL, %SYSFUNC와 같은 SAS 컴파일러 지시어의 목적은 무엇입니까?

컴파일러 지시문은 매크로 함수라고도 하며, 컴파일 시 평가, 로깅, 함수 호출을 활성화하여 매크로 처리를 향상시킵니다. %PUT 디버깅을 위해 로그에 메시지를 씁니다. %EVAL 매크로 변수에 정수 산술을 수행하고 %SYSFUNC 매크로 코드 내에서 DATA 단계 함수를 호출합니다.

이러한 도구는 매크로 변수를 보다 정밀하게 조작할 수 있도록 하여 동적 프로그래밍 기능을 향상시킵니다.

예:

%let today = %sysfunc(today(), date9.);
%put Current Date: &today;

이렇게 하면 매크로 컴파일 시간에 형식화된 날짜가 생성됩니다.


28) SAS는 오류, 경고, 메모를 어떻게 처리하며, 로그 모니터링이 필수적인 이유는 무엇입니까?

SAS 로그는 문제를 오류, 경고, 메모의 세 가지 범주로 분류합니다. 오류는 프로그램 실행이나 데이터 세트 생성을 방해하고, 경고는 잠재적 문제를 나타내며, 메모는 암시적 변환 및 초기화되지 않은 변수를 포함한 정보 메시지를 제공합니다. 로그 모니터링은 데이터 정확성을 보장하고, 숨겨진 오류를 방지하며, 성능 병목 현상을 파악합니다.

로그를 무시하면 잘못된 데이터 처리, 잘린 변수 또는 의도치 않은 병합과 같은 눈에 띄지 않는 오류가 발생할 수 있습니다.

예: "문자 값이 숫자로 변환되었습니다"에 대한 참고 사항은 누락된 값을 도입할 수 있는 암묵적 변환을 나타냅니다.


29) 분석이나 보고에 앞서 SAS에서 데이터 품질을 검증하는 데 사용할 수 있는 기술은 무엇입니까?

SAS의 데이터 검증은 통계적 검증, 구조적 검증, 그리고 비즈니스 규칙 검증을 기반으로 합니다. 이러한 기법에는 예상치 못한 범주를 감지하기 위한 PROC FREQ, 이상치 검출을 위한 PROC MEANS, 데이터셋 조정을 위한 PROC COMPARE, 그리고 PROC SQL 검증 쿼리가 포함됩니다. IF-THEN 논리, FIRST./LAST. 검증 또는 해시 조회를 통한 사용자 지정 검증은 더욱 심층적인 규칙 평가를 보장합니다.

일반적인 기술:

  • IF 조건을 사용한 범위 검사
  • PROC SORT + NODUPKEY를 사용한 중복 감지
  • PROC FREQ를 사용한 누락된 값 패턴
  • PROC TABULATE를 사용한 교차 테이블 검증

예: PROC COMPARE를 사용하여 시스템 간에 마이그레이션된 데이터의 유효성을 검사하면 구조적 일관성과 가치 수준의 일관성이 보장됩니다.


30) SAS ODS(Output Delivery System)를 언제 사용해야 합니까? 그리고 보고에 어떤 이점이 있습니까?

ODS는 출력 형식을 제어하여 SAS 프로시저가 HTML, PDF, Excel, RTF 및 기타 형식으로 결과를 생성할 수 있도록 합니다. 데이터 생성과 프레젠테이션을 분리하여 스타일 지정, 템플릿 작성 및 출력 라우팅 기능을 제공합니다. 분석가는 맞춤형 전문 보고서를 위해 ODS를 활용합니다.

장점:

  • 여러 출력 형식 지원
  • 스타일이 지정된 테이블, 그래프 및 템플릿을 활성화합니다.
  • ODS OUTPUT을 사용하여 출력 데이터 세트를 캡처할 수 있습니다.
  • 반복되는 보고서에 대한 자동화를 개선합니다.

예: Excel을 통해 자동화된 주간 성과 대시보드 생성 ODS Excel 보고 워크플로를 간소화합니다.


31) SAS에서 INFILE 문은 어떻게 작동하며, 어떤 옵션이 원시 파일 읽기를 제어하는 ​​데 도움이 됩니까?

INFILE 문은 SAS가 외부 원시 데이터 파일을 읽는 방법을 지정합니다. INPUT 문과 함께 사용되어 고정 형식, 구분 기호 또는 혼합 형식 텍스트를 구조화된 데이터 세트에 매핑합니다. INFILE 옵션은 레코드 길이, 구분 기호 처리, 누락된 데이터 및 줄 포인터에 대한 세부적인 제어를 제공합니다.

유용한 옵션은 다음과 같습니다. 디엘엠= 사용자 정의 구분 기호의 경우 미즈오버 SAS가 사용 가능한 필드를 넘어서 읽지 못하도록 하려면 퍼스트롭스= 출발선을 지정하려면, LRECL= 긴 기록의 경우 트렁크 커버 가변 길이 줄의 경우. 이러한 옵션은 형식이 잘못된 파일에서도 일관된 데이터 수집을 보장합니다.

예:

infile "sales.txt" dlm="," missover dsd lrecl=300;

이 구성은 후행 필드와 따옴표로 묶인 값의 누락을 방지합니다.


32) SAS 라이브러리에는 어떤 유형이 있으며, 기업 환경에서는 어떻게 사용됩니까?

SAS 라이브러리는 데이터 세트, 카탈로그 및 기타 SAS 파일이 있는 저장 위치를 ​​가리키는 포인터 역할을 합니다. 라이브러리는 임시 라이브러리이거나 영구 라이브러리일 수 있으며, 선택은 지속성 요구 사항과 플랫폼 아키텍처에 따라 달라집니다.

도서관 유형:

  • WORK 라이브러리: 세션이 종료되면 사라지는 임시 저장소입니다.
  • 영구 도서관: 디스크 위치나 데이터베이스를 가리키는 LIBNAME을 사용하여 생성되었습니다.
  • 엔진 기반 라이브러리: V9, BASE, SPDE 및 데이터베이스 엔진(예: ORACLE, TERADATA) 등이 있습니다.
  • 메타데이터 라이브러리: SAS Enterprise Guide 및 SAS Studio 환경에서 제어된 액세스를 위해 사용됩니다.

예: 대규모 조직에서 LIBNAME 연결은 종종 보안을 직접 가리킵니다. Oracle 또는 Hadoop 테이블을 사용하면 데이터 중복 없이 원활한 분석을 수행할 수 있습니다.


33) COMPRESS 함수와 COMPRESS= dataset 옵션의 목적은 무엇이며, 어떻게 다릅니까?

이름은 같지만 COMPRESS 함수와 COMPRESS= dataset 옵션은 서로 다른 용도로 사용됩니다. 압축 기능 문자열에서 지정된 문자를 제거하여 데이터 정리 또는 표준화에 도움을 줍니다. 이와 대조적으로 COMPRESS= 데이터 세트 옵션 저장된 관찰 결과에 RLE(Run Length Encoding) 또는 RDC 압축 알고리즘을 적용하여 물리적 데이터 세트 크기를 줄입니다.

비교표 :

특색 압축 함수 압축= 옵션
목적 텍스트에서 문자 제거 파일 크기를 줄입니다
범위 가변 수준 데이터 세트 수준
예시 name_clean = compress(name,,'kd'); set data(compress=yes);

예: 50만 행의 데이터 세트를 압축하면 저장 공간이 60% 줄어들어 I/O 성능이 향상됩니다.


34) SAS 프로그램을 효과적으로 디버깅하려면 어떻게 해야 하나요? 또한, 어떤 기능이 문제를 식별하는 데 도움이 되나요?

SAS에서 효과적인 디버깅을 위해서는 로그 메시지, PUT 문, ODS TRACE 및 진단 옵션을 체계적으로 사용해야 합니다. 로그는 ERROR, WARNING 및 NOTE 메시지를 통해 구문 문제, 초기화되지 않은 변수 또는 유형 불일치를 식별하는 단서를 제공합니다. PUTLOG 문은 사용자 정의 디버깅 출력을 제공하여 실행 중 변수 값을 추적하는 데 도움이 됩니다.

추가 기술에는 다음이 포함됩니다. OPTIONS MPRINT, SYMBOLGEN글렌데일 MLOGIC 매크로 디버깅 및 활용을 위해 PROC CONTENTS 데이터 세트 속성을 검사합니다. DATA 단계 디버깅의 경우 대화형 DATA 단계 디버거 단계별 실행, 중단점 및 변수 감시를 가능하게 합니다.

예: MPRINT를 활성화하면 매크로에서 생성된 SQL 코드가 올바른지 확인하는 데 도움이 됩니다.


35) PROC REPORT와 PROC TABULATE의 차이점은 무엇이고, 각각 언제 사용해야 합니까?

PROC REPORT는 행 단위 제어 기능을 갖춘 다재다능한 맞춤형 보고서를 제공하며, 세부 정보 수준, 요약 수준 및 계산된 열을 지원합니다. PROC TABULATE는 프레젠테이션 중심의 표에 초점을 맞춘 다차원 교차 탭 요약을 생성합니다. 이러한 특성을 이해하면 분석가는 가장 읽기 쉽고 효율적인 형식을 선택하는 데 도움이 됩니다.

비교:

특색 프로세스 보고서 프로세스 표
Control: 행 논리에 대한 높은 제어 구조화된 테이블에 대한 높은 제어
산출 텍스트 또는 스타일이 지정된 보고서 교차표 행렬
적용 사례 맞춤형 KPI 대시보드 다차원 요약

예: 조건부 서식이 필요한 재무 대시보드는 PROC REPORT에 속하지만, 지역, 분기, 세그먼트별 매출에 대한 3D 요약은 PROC TABULATE에 속합니다.


36) SAS 프로시저에서 CLASS 및 BY 문의 의미는 무엇이며, 두 문의 차이점은 무엇입니까?

CLASS와 BY는 모두 그룹 수준 분석을 생성하지만 동작 방식이 다릅니다. CLASS는 사전 정렬된 데이터를 필요로 하지 않으며, PROC MEANS, PROC SUMMARY, PROC TABULATE와 같은 프로시저 내에서 범주형 변수별 통계를 생성하는 데 사용됩니다. BY는 정렬된 데이터를 필요로 하며 각 BY 그룹에 대해 별도의 프로시저 실행을 생성하여 절차적 독립성과 별도의 ODS 출력 블록을 제공합니다.

주요 차이점:

  • CLASS: 정렬이 필요 없으므로 집계 효율성이 더 높습니다.
  • BY: 정렬이 필요하며 독립적인 출력을 생성합니다.

예: 지역별로 별도의 회귀 모델을 계산하려면 BY 처리가 선호됩니다. 지역별 매출을 단일 표로 요약하려면 CLASS 처리가 적합합니다.


37) SAS는 내부적으로 날짜와 시간을 어떻게 처리하며, 이러한 저장 구조를 이해하는 것이 왜 중요합니까?

SAS는 날짜를 1960년 1월 1일 이후의 일수로 저장하고, 날짜/시간 값은 해당 날짜 이후의 초 수로 저장합니다. 시간 값은 자정부터의 초 단위를 나타냅니다. 이러한 숫자 표현을 통해 일 수 추가 또는 기간 계산과 같은 수학적 조작이 가능합니다.

이 구조를 이해하는 것은 정확한 보고, 오차 발생 방지, 그리고 형식과 정보의 올바른 사용을 위해 매우 중요합니다. 적절한 형식 없이 날짜를 계산하면 읽을 수 있는 날짜 대신 원시 숫자 값이 나타나기 때문에 초보자에게 혼란을 주는 경우가 많습니다.

예:

difference = intck('day', StartDate, EndDate);

이 계산이 가능한 이유는 두 날짜가 일관된 숫자 기반을 공유하기 때문입니다.


38) %SCAN, %SUBSTR, %UPCASE와 같은 SAS 매크로 함수는 코드 생성 중에 어떤 이점을 제공합니까?

매크로 함수는 컴파일 시 텍스트 수준 조작을 제공하여 변수 이름, 데이터 세트 이름 및 조건 코드 세그먼트를 동적으로 생성할 수 있도록 합니다. %SCAN은 매크로 변수에서 단어를 추출하고, %SUBSTR은 텍스트 세그먼트를 분할하며, %UPCASE는 비교를 위해 대문자를 동일하게 사용하도록 보장합니다.

이러한 함수는 매크로가 사용자 제공 매개변수에 맞게 조정될 수 있도록 하여 일반화를 향상시킵니다. 예를 들어, 다음을 사용하여 월별 데이터 세트를 생성합니다. %substr(&date,1,6) 자동화된 테이블 이름 지정이 가능합니다.

예:

%let region = north america;
%put %upcase(&region);

이것은 생산합니다 북아메리카, 매크로 논리에서 일관된 매칭을 보장합니다.


39) 저장을 위해 SAS 데이터 세트와 외부 데이터베이스 중에서 선택할 때 고려해야 할 요소는 무엇입니까?

SAS 데이터 세트와 외부 데이터베이스 중 어떤 것을 선택할지는 데이터 볼륨, 동시성 요구 사항, 보안 제어 및 통합 요구 사항에 따라 달라집니다. SAS 데이터 세트는 빠른 순차적 액세스를 제공하고 분석 워크플로에 적합하지만, 다중 사용자 동시성 및 강력한 트랜잭션 제어 기능이 부족합니다. 다음과 같은 외부 데이터베이스는 Oracle, Teradata 및 SQL Server는 인덱싱, ACID 준수, 확장성 및 제어된 액세스를 제공합니다.

요인은 다음과 같습니다.

  • 데이터 크기 및 예상 증가
  • 쿼리 동시성
  • 보안 및 사용자 권한
  • 엔터프라이즈 시스템과의 통합
  • 비용 및 관리비

예: 매일 5만 개의 행을 분석하는 데이터 과학 팀은 SAS 데이터 세트를 선호할 수 있지만, 1억 개의 레코드가 있는 엔터프라이즈 CRM에는 데이터베이스가 필요합니다.


40) SAS는 컴파일 단계에서 변수 길이와 유형을 어떻게 결정하며, 일관되지 않은 소스로 인해 어떤 문제가 발생합니까?

SAS는 컴파일 과정에서 각 변수의 첫 번째 발생을 검사하여 유형과 길이를 지정합니다. 문자 변수의 경우, 길이는 해당 첫 번째 발생 시 지정된 가장 긴 값으로 기본 설정됩니다. 변수가 여러 SET 또는 MERGE 데이터세트에 걸쳐 나타나는 경우, 길이가 일치하지 않으면 잘림 및 경고가 발생합니다. 숫자 변수는 명시적으로 지정되지 않는 한 항상 8바이트를 할당받습니다.

일관되지 않은 문자 길이와 같은 문제는 키 불일치 및 잘못된 병합으로 이어집니다. 개발자는 일관성을 유지하기 위해 SET 문 앞에 LENGTH 문을 사용하는 경우가 많습니다.

예:

length ID $15;
set data1 data2;

이렇게 하면 두 입력 모두에서 ID가 균일하게 유지됩니다.


41) SAS에서 OUTPUT 문의 목적은 무엇이며, 이를 통해 데이터 세트 생성을 어떻게 제어할 수 있습니까?

OUTPUT 문은 SAS에 프로그램 데이터 벡터(PDV)의 현재 내용을 하나 이상의 데이터 세트에 언제 기록할지 명시적으로 알려줍니다. OUTPUT이 없으면 SAS는 DATA 스텝 반복마다 하나의 관측값을 자동으로 기록합니다. OUTPUT을 의도적으로 사용하면 한 반복에서 여러 관측값을 생성하거나, 선택적으로 관측값을 기록하거나, 조건에 따라 다른 데이터 세트에 출력을 라우팅할 수 있습니다.

예:

data high low;
  set sales;
  if revenue > 10000 then output high;
  else output low;
run;

이렇게 하면 단일 DATA 단계에서 두 개의 데이터 세트가 생성됩니다. 레코드 확장이나 여러 요약 작성과 같은 고급 데이터 조작을 위해서는 OUTPUT에 대한 이해가 필수적입니다.


42) PROC COMPARE는 데이터 세트의 유효성 검사를 어떻게 지원하며, 어떤 옵션이 비교 정확도를 높여줍니까?

PROC COMPARE는 두 데이터 세트를 평가하고 구조, 메타데이터 및 실제 데이터 값의 차이점을 강조합니다. 분석 파이프라인에서 마이그레이션 검증, ETL 품질 검사 및 회귀 테스트에 일반적으로 사용됩니다. 주요 옵션은 다음과 같습니다. 기준=, 리스텔, 최대 인쇄량=글렌데일 아웃디프 보다 자세한 보고서를 작성하고 숫자적 불일치에 대한 허용 수준을 제어하는 ​​데 도움이 됩니다.

이 절차는 일치하지 않는 변수 유형, 예상치 못한 누락된 값, 행 수준 차이 및 구조적 문제를 식별합니다.

예: 마이그레이션할 때 Oracle SAS의 경우, PROC COMPARE는 결과 SAS 데이터 세트가 숨겨진 잘림이나 반올림 오류 없이 소스 데이터 세트와 일치하도록 보장합니다.


43) RETAIN 문을 FIRST./LAST. 논리와 결합하면 어떤 의미가 있습니까?

RETAIN을 FIRST./LAST.와 함께 사용하면 누적 합계, 누적 차이, 범주형 플래그 등 강력한 그룹 수준 계산이 가능합니다. FIRST.variable은 BY 그룹의 시작을 나타내므로 RETAIN은 값을 적절하게 재설정하거나 누적하는 데 도움이 됩니다.

예시:

by Customer_ID
if first.Customer_ID then Total=0;
Total + Amount;
if last.Customer_ID then output;

이 로직은 PROC SUMMARY를 사용하지 않고도 고객 수준 합계를 집계합니다. 이는 각 새 그룹에 대해 값을 재설정하는 동안 그룹 내 행의 값을 보존하는 RETAIN의 중요성을 보여줍니다. 효율적인 DATA 단계 요약을 위해서는 이 패턴을 이해하는 것이 필수적입니다.


44) 범주형 분석에서 PROC FREQ와 PROC SUMMARY의 차이점은 무엇입니까?

PROC FREQ는 카이제곱 검정과 같은 빈도표, 교차분석, 연관 검정을 생성하므로 범주형 분포 및 분할 분석에 적합합니다. PROC SUMMARY는 연속형 또는 이산형 집단에 대한 수치 통계량을 계산하지만, 별도로 명시하지 않는 한 빈도 계산은 기본적으로 생성하지 않습니다.

비교표 :

특색 프로세스 빈도 프로세스 요약
산출 빈도표 요약 통계
이상적인 대상 카운트, 백분율, 연관성 평균, 합계, 범위
통계 테스트 카이제곱, 피셔의 정확함 기본적으로 없음

예: 고객 인구 통계(성별, 지역)를 평가하려면 PROC FREQ가 더 우수합니다. 세그먼트별 평균 매출을 계산하려면 PROC SUMMARY가 적합합니다.


45) FIRSTOBS와 OBS 옵션은 샘플 추출을 제어하는 ​​데 어떻게 도움이 되나요?

FIRSTOBS와 OBS는 데이터 세트에서 읽어올 부분을 제한하는 데이터 세트 옵션입니다. FIRSTOBS는 읽을 첫 번째 관측값을 지정하고, OBS는 마지막 관측값을 지정합니다. 이러한 옵션은 개발 과정에서 처리 시간을 줄여주기 때문에 샘플링, 디버깅 및 성능 테스트에 유용합니다.

예:

set bigdata(firstobs=1 obs=1000);

이 옵션은 처음 1000개 행만 추출하여 테스트 주기 동안 코드를 빠르게 실행합니다. 이 값은 데이터셋 자체를 변경하지 않고 DATA 단계 또는 프로시저 실행 중에만 적용됩니다. 이러한 옵션은 매우 큰 데이터셋을 작업할 때 효율성을 향상시킵니다.


46) CNTLIN 및 CNTLOUT과 함께 PROC FORMAT을 사용하는 이점은 무엇이며, 동적 형식을 어떻게 지원합니까?

CNTLIN을 사용하면 데이터세트에서 형식을 생성하여 동적인 데이터 기반 레이블 지정 시스템을 구축할 수 있습니다. CNTLOUT은 기존 형식을 데이터세트로 추출하여 형식을 수정, 감사 또는 버전 관리할 수 있도록 합니다. 이 기능은 형식 값이 자주 변경되거나 데이터베이스 테이블에 저장된 비즈니스 규칙의 적용을 받는 경우 유용합니다.

예: 은행에 위험 코드와 그 설명적 의미를 유지하는 데이터 세트가 있을 수 있습니다. SAS는 CNTLIN을 사용하여 값 설명을 직접 작성하지 않고도 자동으로 형식을 생성합니다. 이러한 접근 방식은 형식 지정 논리를 중앙 집중화하고 대규모 보고 시스템 전반의 유지 관리를 간소화합니다.


47) SAS에서 SUM 문과 SUM() 함수의 차이점은 무엇이며, 각각은 언제 더 선호됩니까?

SUM 문(x + y;)는 변수를 암묵적으로 유지하고 누락된 값을 0으로 처리하므로 누적 합계에 적합합니다. SUM() 함수(x = sum(a,b,c);)은 현재 반복 내에서만 인수를 평가하고 결과를 유지하지 않고 누락된 값을 무시합니다.

비교:

아래 SUM 문 SUM() 함수
보유 가능 아니
결 측값 0으로 처리됨 무시 됨
적용 사례 누적 합계 행 수준 합계

예: total + amount; 관찰을 통해 축적되는 동안 sum(amount1, amount2) 같은 행 내에서만 합계를 계산합니다.


48) END= 데이터 세트 옵션의 목적은 무엇이며, 데이터 세트의 마지막 행을 감지하는 데 어떻게 도움이 됩니까?

END= dataset 옵션은 SAS가 데이터셋의 마지막 관측값을 읽을 때 1로 설정되는 임시 변수를 할당합니다. 이는 요약 레코드 작성, 파일 닫기, 해시 객체 출력 마무리와 같은 초기화 또는 마무리 작업을 수행할 때 매우 유용합니다.

예:

set sales end=last;
if last then put "Dataset processing complete.";

이 논리는 모든 반복 작업 후 특정 작업이 한 번만 발생하도록 보장합니다. END=는 특히 프로그래밍 방식 보고서 생성 및 누적 요약 데이터 세트 구축에 유용합니다.


49) SAS에서 SPDE(Scalable Performance Data Engine)를 사용하는 주요 장점과 단점은 무엇입니까?

SPDE 엔진은 대규모 멀티스레드 데이터 환경의 성능을 향상시킵니다. 여러 스토리지 유닛에 데이터를 분산하고 병렬 읽기 및 쓰기를 수행합니다. 처리량이 높은 분석 및 대량 ETL 워크로드에 적합합니다.

장점과 단점:

장점 단점
더 빠른 성능을 위한 병렬 I/O 멀티 디스크 환경이 필요합니다
대용량 데이터 세트에 효율적 복잡한 구성
파티셔닝 및 인덱싱 지원 소규모 데이터 세트에는 적합하지 않습니다.

예: SPDE를 사용하여 300억 개의 레코드를 처리하면 런타임을 크게 줄일 수 있습니다. 특히 여러 개의 CPU와 디스크가 있는 시스템에서는 그 효과가 큽니다.


50) PROC SQL은 하위 쿼리를 어떻게 처리하며, SAS 프로그래밍에 어떤 이점을 제공합니까?

PROC SQL은 상관 관계가 있는 하위 쿼리와 상관 관계가 없는 하위 쿼리를 지원하여 심층 필터링, 조건부 조회 및 동적 계산을 가능하게 합니다. 하위 쿼리를 사용하면 SQL에서 값을 즉석에서 계산하고, 필터링된 하위 집합과 일치시키거나, 중간 데이터 집합 없이 조건부 조인을 수행할 수 있습니다.

예:

select * from sales
where revenue > (select avg(revenue) from sales);

이를 통해 성능이 우수한 레코드를 식별할 수 있습니다. 하위 쿼리는 임시 데이터 세트의 필요성을 줄이고, 가독성을 향상시키며, 단일 SELECT 문에서 더 복잡한 로직을 구현할 수 있도록 합니다. 특히 메타데이터 쿼리와 분석 필터링에 유용합니다.

🔍 실제 상황과 전략적 대응을 담은 SAS 면접 질문 모음

1) SAS에서 DATA 단계와 PROC 단계의 차이점은 무엇입니까?

후보자에게 기대하는 것: 면접관은 지원자가 SAS 기본 사항을 얼마나 이해하고 있는지, 그리고 데이터를 처리하고 분석하는 방법을 알고 있는지 평가하고자 합니다.

예시 답변:

DATA 단계는 데이터 세트를 읽고, 조작하고, 생성하는 데 사용되는 반면, PROC 단계는 데이터를 분석하거나 보고서를 생성하는 데 사용됩니다. DATA 단계는 데이터 준비에 중점을 두고, PROC 단계는 통계적 또는 분석적 절차를 적용합니다.


2) SAS에서 누락된 값을 어떻게 처리하나요?

후보자에게 기대하는 것: 면접관은 데이터 품질과 완전성에 대한 귀하의 접근 방식을 알고 싶어합니다.

예시 답변:

"저는 먼저 PROC MEANS 또는 PROC FREQ를 통해 결측값을 식별하여 처리합니다. 그런 다음 분석 맥락과 모델에 미치는 영향을 고려하여 결측값을 대체할지, 삭제할지, 아니면 별도의 범주로 처리할지 결정합니다."


3) SAS에서 MERGE 문의 목적을 설명해 주시겠습니까?

후보자에게 기대하는 것: 면접관은 당신이 데이터 병합과 관계적 개념을 이해하고 있는지 알고 싶어합니다.

예시 답변:

MERGE 문은 공통 변수를 기준으로 데이터 세트를 결합하는 데 사용됩니다. 데이터 세트를 수평으로 결합할 수 있으며, BY 변수를 기준으로 데이터 세트를 정렬해야 합니다.


4) 당신이 참여했던 도전적인 SAS 프로젝트에 대해 설명하고 어떻게 그것을 관리했는지 설명하세요.

후보자에게 기대하는 것: 문제 해결 능력, 주도성, 결과 도출 능력에 대한 평가.

예시 답변(필수 구문 #1 사용):

"이전에는 여러 개의 서로 다른 데이터 소스가 포함된 복잡한 데이터 통합 ​​프로젝트를 담당했습니다. SAS 매크로를 사용하여 맞춤형 검증 규칙, 표준화된 형식, 그리고 자동화된 품질 검사를 개발했습니다. 이를 통해 정확한 보고가 보장되고 처리 시간이 단축되었습니다."


5) 더 나은 성능을 위해 SAS 코드를 최적화하려면 어떻게 해야 하나요?

후보자에게 기대하는 것: 효율성, 최적화 및 SAS 모범 사례에 대한 이해.

예시 답변:

불필요한 변수 사용을 최소화하고, 부분집합을 사용할 때 IF 대신 WHERE 절을 사용하고, 대용량 데이터셋을 인덱싱하고, 매크로 변수를 통한 반복 계산을 피함으로써 SAS 코드를 최적화합니다. 또한 비효율성을 제거하기 위해 로그를 검토합니다.


6) SAS 관련 문제를 해결하기 위해 팀과 협업해야 했던 적이 있나요?

후보자에게 기대하는 것: Teamwork, 의사소통, 갈등 해결 기술.

예시 답변(필수 구문 #2 사용):

이전 직책에서는 데이터 엔지니어링 팀과 협력하여 보고 결과의 불일치를 해결했습니다. 데이터 흐름을 이해하기 위한 논의를 촉진하고, PROC COMPARE를 사용하여 데이터 세트를 검증했으며, 향후 사용을 위해 공유 프로세스를 문서화했습니다.


7) SAS 데이터 출력의 정확성과 무결성을 어떻게 보장하시나요?

후보자에게 기대하는 것: 세부 사항, 품질 보증 및 검증 방법에 대한 주의.

예시 답변:

"저는 데이터 검증 검사를 수행하고, PROC CONTENTS를 사용하여 변수 속성을 검증하고, 독립적인 질의를 통해 결과를 교차 검증하여 정확성을 보장합니다. 또한 중요한 보고서에 대한 동료 평가 절차도 유지합니다."


8) 마감일이 촉박했지만 SAS 분석이 복잡했던 상황을 설명해 보세요. 어떻게 처리하셨나요?

후보자에게 기대하는 것: 시간 관리, 우선순위 정하기, 압박 속에서도 침착함.

예시 답변(필수 구문 #3 사용):

이전 직장에서는 매우 촉박한 일정 안에 상세한 통계 보고서를 제출해야 했습니다. 필수적인 분석부터 우선순위를 정하고, SAS 매크로를 사용하여 반복적인 작업을 자동화했으며, 기대치를 관리하기 위해 상태 업데이트를 자주 전달했습니다.


9) SAS 매크로를 어떻게 사용하며, 어떤 이점이 있나요?

후보자에게 기대하는 것: 자동화, 확장성, 코딩 효율성에 대한 지식.

예시 답변:

"저는 SAS 매크로를 사용하여 반복적인 작업을 자동화하고, 코딩 오류를 줄이며, 코드 재사용성을 향상시킵니다. 대규모 프로젝트에서 일관성을 유지하고 매개변수 기반 분석을 간소화하는 데 도움이 됩니다."


10) SAS를 사용하여 프로세스를 개선한 실제 시나리오를 설명하세요.

후보자에게 기대하는 것: 실제 적용, 효율성 개선 및 비즈니스 영향.

예시 답변(필수 구문 #4 사용):

"지난번 업무에서는 수동으로 생성되던 월별 보고 워크플로를 자동화했습니다. PROC SQL과 SAS 매크로를 사용하여 처리 시간을 몇 시간에서 몇 분으로 단축했고, 덕분에 팀 생산성이 크게 향상되었습니다."

이 게시물을 요약하면 다음과 같습니다.