[SAS 고급] 인덱스 생성하기 1 (Creating an Index 1)
안녕하세요 ^^
이번 시간과 다음 시간에는 색인(인덱스: index)을 생성하는 방법을 살펴보겠습니다.
▶ 이번 시간의 목표는 다음과 같습니다.
▷ 인덱스의 정의 알기,
▷ 인덱스의 용도 및 처리과정 알기
▷ 인덱스의 유형 및 옵션 알기
▶ 인덱스는 무엇일까요
- 대량의 SAS 데이터셋은 순차적으로 자료를 읽는 과정에서 오랜 시간이 소요될 수 있습니다.
- 인덱스를 사용하여 시간을 단축시킬 수 있는데요, 특정 관측치를 직접 찾기 위해서 인덱스를 사용합니다.
- 인덱스를 사용하면 I/O 와 CPU 시간을 줄일 수 있습니다.
▶ 아래 경우 인덱스는 매우 유용합니다.
▷ WHERE statement: 작은 subset에 더 빠르게 접근하는 경우
▷ BY statement: 정렬된 순서로 관측치들을 반환하는 경우
▷ KEY= 옵션을 사용한 SET statement: 테이블 조회(lookup)하는 경우
▷ PROC SQL: 관측치를 조인하는 경우
▷ KEY= 옵션을 사용한 MODIFY statement: 관측치를 수정하는 경우
▶ 인덱스의 위치
▷ 인덱스를 생성하는 인덱스 및 데이터셋은 동일한 SAS 라이브러리에 저장됩니다.
- 아래 그림을 보면, sales 데이터의 sales 인덱스는 customerID이고,
- staff 데이터의 staff 인덱스는 EmployeeID와 ManagerID임을 알 수 있다.
▷ 인덱스는 보조파일입니다.
▷ 인덱스 파일은 키(key) 변수에 의해 순서대로 저장된 항목으로 구성됩니다.
- 인덱스는 키(key) 값과 함께 오름차순 정렬된 순서로 저장됩니다.
- 아래 saleshistory 데이터셋과 index 파일이 있습니다.
- 보면, saleshistory 데이터셋의 customerID가 인덱스임을 알 수 있습니다.
- 또한, 인덱스 파일을 보면, Record ID는 해당 CustomerID의 위치를 나타내주는 변수로, 고객아이디가 14958인 관측치는 1page의 1번째와 24번째 행에, 고객아이디가 14972인 관측치는 1page의 14번째 행에 존재하는 것을 확인할 수 있습니다.
▶ SAS가 인덱스 파일을 확인하는 처리방식에 대해 살펴보겠습니다.
▷ SAS 프로그램에는 아래 WHERE 문이 있습니다.
- 고객아이디가 14958인 고객의 정보를 찾으려 합니다.
▷ 위 WHERE문이 실행되면 SAS는 인덱스 파일에서 Binary Search(이진 검색)를 수행합니다.
▷ Binary Search(이진 검색)은 무엇인지 보겠습니다.
- 아래 인덱스 파일에서 고객아이디가 14958인 레코드(record; observation)을 찾을 때, 인덱스 파일을 반으로 나눕니다.
- 그리고 14958이 위쪽 부분에 있는지 아래쪽에 있는지를 파악합니다.
- 14958 레코드가 아래쪽에 있다고 판단되면 아래쪽 인덱스를 다시 반으로 나눕니다.
- 그리고 다시 14958 레코드가 위쪽 혹은 아래쪽에 있는지 탐색합니다.
- 이런 방식은 순차적으로 모든 관측치가 14958 아이디인지 확인하는 방식보다 더 빠릅니다.
▷ 인덱스를 사용하는 것은 절충이 필요합니다.
- I/O와 CPU시간은 절약할 수 있지만 저장공간을 더 사용하기 때문입니다.
▶ SAS 인덱스 유형
▷ 인덱스는 두 가지 유형(타입)이 있습니다.
(1) Simple(단일) 타입 - key변수가 하나인 인덱스
(2) Composite(복합) 타입 - key변수가 두 개 이상인 인덱스
▶ SAS 인덱스 옵션
▷ 인덱스에는 두 가지 옵션(options)이 있습니다.
(1) UNIQUE 옵션
- UNIQUE 옵션을 사용하면, KEY변수(OrderID와 ProductID)에 대한 값의 연결은 데이터 행에 대한 고유 식별자를 형성합니다.
(2) NOMISS 옵션
- NOMISS 옵션을 사용하면, KEY변수의(ProductID)의 누락된 값은 인덱스에 포함되지 않습니다.
감사합니다 ^^
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!