BookmarkSubscribeRSS Feed

[SAS 고급] 인덱스 생성하기 1 (Creating an Index 1)

Started ‎06-17-2020 by
Modified ‎06-17-2020 by
Views 149

[SAS 고급인덱스 생성하기 1 (Creating an Index 1)

 

 

안녕하세요 ^^

 

 

 

이번 시간과 다음 시간에는 색인(인덱스: index)을 생성하는 방법을 살펴보겠습니다.

 

 

▶ 이번 시간의 목표는 다음과 같습니다.

▷ 인덱스의 정의 알기,

▷ 인덱스의 용도 및 처리과정 알기

▷ 인덱스의 유형 및 옵션 알기

 

 

▶ 인덱스는 무엇일까요

 

대량의 SAS 데이터셋은 순차적으로 자료를 읽는 과정에서 오랜 시간이 소요될 수 있습니다.

인덱스를 사용하여 시간을 단축시킬 수 있는데요, 특정 관측치를 직접 찾기 위해서 인덱스를 사용합니다.

인덱스를 사용하면 I/O 와 CPU 시간을 줄일 수 있습니다.

 

SE22017031823132070.jpg

 

 아래 경우 인덱스는 매우 유용합니다.

▷ WHERE statement작은 subset에 더 빠르게 접근하는 경우

▷ BY statement정렬된 순서로 관측치들을 반환하는 경우

▷ KEY= 옵션을 사용한 SET statement테이블 조회(lookup)하는 경우

▷ PROC SQL관측치를 조인하는 경우

▷ KEY= 옵션을 사용한 MODIFY statement관측치를 수정하는 경우

 

 인덱스의 위치

 인덱스를 생성하는 인덱스 및 데이터셋은 동일한 SAS 라이브러리에 저장됩니다.

아래 그림을 보면, sales 데이터의 sales 인덱스는 customerID이고,

- staff 데이터의 staff 인덱스는 EmployeeID ManagerID임을 알 수 있다.

 

SE22017031823151070.jpg

 

▷ 인덱스는 보조파일입니다.

▷ 인덱스 파일은 (key) 변수에 의해 순서대로 저장된 항목으로 구성됩니다.

인덱스는 키(key) 값과 함께 오름차순 정렬된 순서로 저장됩니다.

아래 saleshistory 데이터셋과 index 파일이 있습니다.

보면, saleshistory 데이터셋의 customerID가 인덱스임을 알 수 있습니다.

또한인덱스 파일을 보면, Record ID는 해당 CustomerID의 위치를 나타내주는 변수로고객아이디가 14958인 관측치는 1page 1번째와 24번째 행에고객아이디가 14972인 관측치는 1page 14번째 행에 존재하는 것을 확인할 수 있습니다.

 

SE22017031823154370.jpg SE22017031823160170.jpg

 

 SAS가 인덱스 파일을 확인하는 처리방식에 대해 살펴보겠습니다.

 SAS 프로그램에는 아래 WHERE 문이 있습니다.

고객아이디가 14958인 고객의 정보를 찾으려 합니다.

 

SE22017031823163170.jpg

 

▷ 위 WHERE문이 실행되면 SAS는 인덱스 파일에서 Binary Search(이진 검색)를 수행합니다.

 

SE22017031823173570.jpg

 

 Binary Search(이진 검색)은 무엇인지 보겠습니다.

아래 인덱스 파일에서 고객아이디가 14958인 레코드(record; observation)을 찾을 때인덱스 파일을 반으로 나눕니다.

 

SE22017031823171270.jpg

 

그리고 14958 위쪽 부분에 있는지 아래쪽에 있는지를 파악합니다.

- 14958 레코드가 아래쪽에 있다고 판단되면 아래쪽 인덱스를 다시 반으로 나눕니다. 

 

SE22017031823184470.jpg

 

그리고 다시 14958 레코드가 위쪽 혹은 아래쪽에 있는지 탐색합니다.

이런 방식은 순차적으로 모든 관측치가 14958 아이디인지 확인하는 방식보다 더 빠릅니다.

 

▷ 인덱스를 사용하는 것은 절충이 필요합니다.

- I/O와 CPU시간은 절약할 수 있지만 저장공간을 더 사용하기 때문입니다. 

 

SE22017031823182870.jpg

 

▶ SAS 인덱스 유형

▷ 인덱스는 두 가지 유형(타입)이 있습니다.

(1) Simple(단일) 타입 - key변수가 하나인 인덱스

(2) Composite(복합) 타입 - key변수가 두 개 이상인 인덱스

 

SE22017031823200170.jpg

 

 

▶ SAS 인덱스 옵션 

▷ 인덱스에는 두 가지 옵션(options)이 있습니다.

 

(1) UNIQUE 옵션

SE22017031823215770.jpg

 

 - UNIQUE 옵션을 사용하면, KEY변수(OrderID ProductID)에 대한 값의 연결은 데이터 행에 대한 고유 식별자를 형성합니다.

SE22017031823205570.jpg

 

(2) NOMISS 옵션

SE22017031823242570.jpg

 

- NOMISS 옵션을 사용하면, KEY변수의(ProductID)의 누락된 값은 인덱스에 포함되지 않습니다. 

SE22017031823234170.jpg

 

 

 

 감사합니다 ^^

Version history
Last update:
‎06-17-2020 02:24 AM
Updated by:
Contributors

SAS Innovate 2025: Register Now

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!

Article Labels
Article Tags