BookmarkSubscribeRSS Feed

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

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

[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

hackathon24-white-horiz.png

The 2025 SAS Hackathon Kicks Off on June 11!

Watch the live Hackathon Kickoff to get all the essential information about the SAS Hackathon—including how to join, how to participate, and expert tips for success.

YouTube LinkedIn

Article Labels
Article Tags