일/Data Mining

[SAS tip] SAS 데이터셋 생성시 compress 옵션 사용.

LEEHK 2008. 3. 17. 13:47
LONG

1. 코드.

        data    &lib..wt_kword_cum&yyyymmdd._else   (drop=freq_tmp compress=yes)

                &lib..in_search_kword&yyyymmdd      (drop=freq_tmp compress=yes)

                ;

        set &lib..in_search_kword&yyyymmdd(keep=siteseq ref_top_psiteseq dkword freq rename=(freq=freq_tmp));

        by siteseq ref_top_psiteseq dkword;

        retain freq;

        if first.dkword then freq=freq_tmp;

        else freq+freq_tmp;

        

        if last.dkword then do;

                /* 차후 누적을 위해서. 전주까지 누적 10회 미만인 경우는 _else 로 뽑아서 처리 */

                if freq<10 then output &lib..wt_kword_cum&yyyymmdd._else ;

 

                /* 전주까지 누적 10회 이상인 경우에는 예외처리 수행 */

                else output &lib..in_search_kword&yyyymmdd;

        end;

        run;

 

 

2. 시간단축 효과.

 

    NOTE: 37732917개의 관측치를 데이터셋 HKTEMP.IN_SEARCH_KWORD20080309. (으)로부터  읽었습니다.

    NOTE: 데이터셋 'HKTEMP.WT_KWORD_CUM20080309_ELSE'은(는) 37056161개 관측치, 4개 변수를 가지고 있습니다.

    NOTE: 데이터셋 'HKTEMP.IN_SEARCH_KWORD20080309'은(는) 493375개 관측치, 4개 변수를 가지고 있습니다.

    NOTE: DATA 문장 실행:

          실행 시간           11:03.27

          cpu 시간            1:42.33

          

    NOTE: 39347111개의 관측치를 데이터셋 HKTEMP.IN_SEARCH_KWORD20080316. (으)로부터  읽었습니다.

    NOTE: 데이터셋 'HKTEMP.WT_KWORD_CUM20080316_ELSE'은(는) 38688032개 관측치, 4개 변수를 가지고 있습니다.

    NOTE: 데이터셋 'HKTEMP.WT_KWORD_CUM20080316_ELSE'을(를) 압축함으로서 크기가 82.65% 감소되었습니다.

          압축된 파일은 115715쪽입니다; 압축되지 않은 파일은 667036쪽이 필요합니다.

    NOTE: 데이터셋 'HKTEMP.IN_SEARCH_KWORD20080316'은(는) 475849개 관측치, 4개 변수를 가지고 있습니다.

    NOTE: 데이터셋 'HKTEMP.IN_SEARCH_KWORD20080316'을(를) 압축함으로서 크기가 84.19% 감소되었습니다.

          압축된 파일은 1297쪽입니다; 압축되지 않은 파일은 8205쪽이 필요합니다.

    NOTE: DATA 문장 실행:

          실행 시간           2:52.28

          cpu 시간            2:06.53

 

 

3. 파일 크기 감소.

 

    옵션 사용 전 : -rw-r--r--  1 kkk aaaaaal    10468253696  3월 10 02:51 wt_kword_cum20080309_else.sas7bdat

    옵션 사용 후 : -rw-r--r--  1 kkk aaaaaal     1895964672  3월 17 01:02 wt_kword_cum20080316_else.sas7bdat

 

 

ARTICLE

SAS 데이터셋 생성시 compress 옵션을 사용함으로써 데이터 사이즈의 효율적인 관리 및 데이터 작업시간을 단축시킬 수 있다.

 

< compress 옵션의 종류>

 

    1. compress= YES | CHAR

     

      - 문자형(CHAR) 필드를 압축하는 옵션이다.

      - ORACLE 등에서 사용 가능한 가변길이(VARCHAR)형식이 SAS에 없기 때문에 용량이 낭비되는 현상을 방지할 수 있다.

      - 공백을 포함한 문자가 2,3bytes 연속 반복될 때 유용하다.

     

    2. compress= BINARY

     

      - 숫자형 필드를 압축하는 옵션이다.

      - sliding-window compression  방식을 사용한다.

      - 숫자형 변수가 (several hundred bytes or larger) blocks of binary data (numeric variables)일 경우에 유용하다.

 

------------

 

< 사용 사례 >

 

0. 요약.

 

    문자형 데이터가 많은 데이터셋 생성시 compress=YES 옵션을 사용함으로써 나타난 효과는 다음과 같다.

    a. 파일 크기 : compress옵션을 사용하기 전의1/5 로 축소되었다. (10GB -> 1.8GB)

    b. 데이터 작업시간 : compress옵션을 사용하기 전의 1/4로 감소되었다. (11분->3분)