본문 바로가기
SAS/SAS 구문사전

【SAS Statement】 LIBNAME 구문

by 기서무나구물 2022. 2. 2.

포스팅 목차

    o LIBNAME 구문

     


    1. 목 적

       LIBNAME 구문은 SAS 라이브러리에 라이브러리 참조자(libref-단축이름)를 할당하거나 해제한다. 개별 라이브러리 참조자 또는 지정되어 있는 모든 라이브러리 참조자를 해제한다. SAS 라이브러리의 특성을 출력한다. 다수의 SAS 라이브러리를 하나의 라이브러리로 지정하거나 또는 다수의 카탈로그를 하나의 카탈로그로 결합하여 사용한다.

     


    2. 문 법

    LIBNAME libref <engine> 'SAS-library' < options > <engine/host-options>;
    LIBNAME libref CLEAR | _ALL_ CLEAR;
    LIBNAME libref LIST | _ALL_ LIST;
    LIBNAME libref <engine> (library-specification-1<. . . library-specification-n>)< options>;

     

    1) Libref

       SAS 파일이 저장되어 있는 병합저장소에 대한 단축 이름 또는 별칭을 지정한다다. SAS 라이브러리에서 라이브러리 참조자를 해제하거나 라이브러리 참조자의 속성을 출력하는 경우에는 이전에 할당된 라이브러리 참조자를 지정한다.

    범위 : 1~8 문자로 구성된다.
    Tip : 라이브러리 참조자와 SAS 라이브러리 사이의 연관 관계는 SAS 세션이 연결되어 있는 동안이나 지정된 연결의 변경 또는 다른 LIBNAME 구문을 사용하여 연결을 해제할 때까지 지속된다.

     

    2) ‘SAS-library’

       SAS 라이브러리의 물리적 이름을 지정한다. 물리적 이름은 운영 환경에 의해 인식되는 이름이어야 한다. 단일 또는 이중 인용 부호 안에 작성한다.

    운영환경정보 : 파일의 물리적 이름 지정에 관한 상세한 내용은 해당 운영 환경 도움말을 참고하라.

     

    3) Library-specification

       라이브러리의 물리적 이름이나 이전에 할당된 라이브러리 참조자 또는 이 두 개를 조합하여 다수의 SAS 라이브러리를 지정한다. 괄호 안에 공백 또는 콤마를 사용하여 지정자를 구분한다.

     

       (1) ‘SAS-library’ : SAS 라이브러리의 물리적 경로 이름을 인용 부호 안에 작성하라.

       (2) Libref : 이전에 할당된 라이브러리 참조자의 이름을 지정한다.

     

    제한사항 : 라이브러리를 연결하는 경우에 특정 엔진 또는 운영 환경에 관련된 옵션을 지정할 수 없다.
    주요기능 : 예제2 : 논리적으로 SAS 라이브러리 결합하기
    관련사항 : 라이브러리 결합 규칙

     

    4) Engine

       작업 환경에서 사용하기 위한 라이브러리 엔진의 이름을 지정한다.

    Tip : 일반적으로, SAS는 라이브러리에 위치한 파일에 접근하는 경우에, 사용하기 위한 적절한 엔진을 자동적으로 결정한다. 기본 엔진과 다른 엔진으로 새로운 라이브러리 생성하기 원하는 경우에 새로운 엔진을 직접 지정한다.
    참고 : 사용 가능한 엔진의 목록은 운영환경에 대한 SAS도움말을 참조하라. 엔진에 대한 추가 정보에 대하여는 SAS Language Reference: Concepts 참조하라.

     

    5) CLEAR

       기존에 할당되어 있는 하나 이상의 라이브러리 지정자의 연결을 취소한다. 단일 라이브러리 참조자를 취소하기 위하여 라이브러리 참조자의 이름을 지정하고, 현재 지정되어 있는 모든 라이브러리 참조자를 취소하기 위하여 _ALL_ 옵션을 지정하라.

    Tip : 단일 라이브러리 참조자를 해제하기 위하여 라이브러리 참조자의 이름을 지정하고, 현재 지정되어 있는 모든 라이브러리 참조자를 해제하기 위하여 _ALL_ 옵션을 지정하라.

     

    6) _ALL_

       현재 지정되어 있는 모든 라이브러리 참조자에 CREAR 또는 LIST 인수를 적용하도록 지정한다.

     

    7) LIST

       SAS 로그에 하나 이상의 SAS 라이브러리의 속성을 출력한다. 단일 SAS 라이브러리의 속성을 출력하기 위하여 라이브러리 참조자의 이름을 지정하고, 현재 세션에 사용되는 모든 라이브러리 참조자의 SAS 라이브러리 속성을 출력하기 위하여 _ALL_옵션을 사용하라.

    Tip : 단일 SAS 라이브러리의 속성을 출력하기 위하여 라이브러리 참조자의 이름을 지정한다. 현재 세션에 사용되는 모든 라이브러리 참조자의 SAS 라이브러리 속성을 출력하기 위하여 _ALL_옵션을 사용하라.

     


    8) 옵션

       (1) ACCESS=READONLY | TEMP

    운영환경정보 : 일부 운영 환경은 ACCESS=옵션과 유사한 기능을 포함하는 LIBNAME 구문 옵션을 지원한다.
    • READONLY :

         전체 SAS 라이브러리에 읽기 속성을 지정한다. SAS가 이 라이브러리의 데이터 정보를 업데이트하거나 새로운 정보를 작성하기 위하여 라이브러리에 존재하는 데이터 세트를 수정하지 못하도록 지정한다.

     

    • TEMP :

         SAS 라이브러리를 임시(테스트-scratch) 라이브러리로 지정한다. 시스템이 TEMP 라이브러리의 파일이 손상된 경우 데이터 복구를 위하여 사용하는 CPU 자원(cycle)을 제어하여서 자원을 절약한다.

    Tip  데이터 복구를 위하여 사용되는 자원을 절약하기 위하여 ACCESS=TEMP 를 사용하라.

     

       (2) COMPRESS=NO | YES | CHAR | BINARYSAS

         라이브러리에 출력되는 SAS 데이터 세트에 대한 압축을 관리한다.

    영향 : COPY 프로시져에서 기본값 CLONE는 출력 데이터 세트의 압축 속성으로 COMPRESS=옵션에서 지정된 값 대신에 입력 데이터 세트의 압축 속성을 사용한다. CLONE과 NOCLONE에 대한 상세한 정보는 PROC DATASETS의 COPY 구문을 참조하라. SAS/SHARE 또는 SAS/CONNECT를 사용하는 경우에는 적용되지 않는다.

     

    • NO

         새롭게 생성되는 SAS 데이터 세트의 관측치가 압축되지 않도록 지정한다. (고정 길이 레코드)

    • YES | CHAR

         새롭게 생성되는 SAS 데이터 세트의 관측치를 RLE(Run Length Encoding) 방식으로 압축되도록 지정한다. (가변 길이 레코드) RLE 방식은 연속적으로 반복되는 문자(공백 포함)를 2byte 또는 3byte 형식으로 줄여서 관측치를 압축한다. 주로 문자형 데이터에 이 압축 알고리즘을 사용한다.

    Tip  문자형 데이터에 이 압축 알고리즘을 사용하라.

     

    • BINARY

         새롭게 생성되는 SAS 데이터 세트 관측치의 압축 방식을 RDC(Ross Data Compression) 방식으로 지정한다. (가변 길이 레코드) RDC 방식은 파일을 압축하기 위하여 RLE(run-length encoding) 방식과 슬라이딩 윈도우 압축(sliding-window compression) 방식을 함께 사용한다.

    Tip  이 방식은 binary 데이터(수치형 변수)가 매우 큰(수백 바이트 이상) 블록으로 구성된 데이터에 매우 효과적 방식이다. 압축 기능은 한 번에 하나의 레코드에 작동하기 때문에, 레코드 길이가 수백 바이트 이상이 되어야 효율적으로 압축된다.

     

     

       (3) CVPBYTES=bytes

         코드 변환(Transcoding)이 필요한 SAS 데이터 파일을 처리하는 경우에 문자형 변수 길이를 확장하기 위한 바이트 수를 지정한다.

    참고 : CVPBYTES=, CVPENGINE=, CVPMULTIPLIER= 옵션

     

       (4) CVPENGINE | CVPENG=engine

         코드변환이 필요한 SAS 데이터 파일을 처리하기 위하여 사용하는 엔진을 지정한다.

    참고 : CVPBYTES=, CVPENGINE=, CVPMULTIPLIER= 옵션

     

       (5) CVPMULTIPLIER | CVPMULT=multiplier

         코드변환이 필요한 SAS 데이터 파일을 처리하는 경우에 문자형 변수 길이를 확장하기 위한 변환값(multiplier)을 지정한다.

    참고 : CVPBYTES=, CVPENGINE=, CVPMULTIPLIER= 옵션

     

       (6) INENCODING=ANY | ASCIIANY | EBCDICANY | encoding-value

         SAS 라이브러리에서 SAS 데이터 세트를 읽는 경우에(입력 처리) 인코딩을 제어한다.

    참고 : INENCODING= , OUTENCODING= 옵션          

     

       (7) OUTENCODING=ANY | ASCIIANY | EBCDICANY | encoding-value

         SAS 라이브러리에서 SAS 데이터 세트를 생성하는 경우에 (출력 처리) 인코딩을 제어한다.

    참고 : INENCODING= , OUTENCODING= 옵션

     

       (8) OUTREP=format

         데이터가 특정 운영 환경에서 저장되는 형태를 SAS 라이브러리의 데이터 표현 방식으로 지정한다.

     

         운영 환경에 따라서 부동 소수점(예, IEEE 또는 IBM 메인프레임), 문자 인코딩(ASCII 또는 EBCDIC), 메모리에서 바이트 순서, 단어 정렬, 정수 데이터 형식 길이(16비트, 32비트, 64비트) 등을 저장하기 위하여 다양한 표준 또는 규칙을 사용한다.

     

         고유 데이터 표현은 데이터 표현이 파일에 접근하고 있는 CPU와 동일한 환경을 표시한다. 예를 들어, Windows 데이터 표현으로 존재하는 파일은 윈도우 운영 환경에서 발생한다.

     

    기본적으로, SAS가 실행중인 CPU의 고유 데이터 표현을 사용하여 새로운 SAS데이터 세트를 생성한다. OUTREP= 옵션은 현재의 환경에서 외부 데이터 표현을 사용하는 파일을 생성하도록 한다. 

     

    예를 들어, UNIX환경에서 윈도우 데이터 표현을 사용하여 SAS 데이터 파일을 생성 할 수 있다. 라이브러리에 작성되는 데이터 세트는 새로운 데이터 표현이 부여된다.

    영향 : COPY 프로시져에서 기본값 CLONE 출력 데이터 세트의 데이터 표현에 대하여 OUTREP=옵션에서 지정된 값 대신에 입력 데이터 세트의 데이터 표현을 사용한다. CLONE과 NOCLONE에 대한 상세한 정보는 PROC DATASETS를 참고하라. SAS/SHARE 또는 SAS/CONNECT를 사용하는 경우에는 적용되지 않는다.
    영향 : Transcoding은 인코딩이 호환되지 않는 경우에 문자 데이터 손실이 발생할 수 있다.

     

       (9) REPEMPTY= YES | NO

         새로운 데이터 세트의 데이터가 비어있는 경우에 동일한 이름을 가진 임시 또는 영구적인 SAS 데이터 파일의 교체 가능 여부를 지정한다.

    비교 : 개별 데이터 세트에 지정한 REPEMPTY= 데이터 세트 옵션은 LIBNAME 구문에서 REPEMPT= 옵션의 설정에 우선하여 적용된다.
    관련사항 REPEMPTY= 데이터 세트 옵션

     

    • YES :

         신규 공백 데이터 세트가 기존에 동일한 이름을 가지고 존재하는 데이터 세트를 대체하도록 지정한다.REPEMPTY= YES와 REPLACE=NO 옵션을 지정한 경우에 기존에 존재하고 있는 데이터 세트를 교체하지 못한다.

    영향  REPEMPTY= YES 와 REPLACE=NO 옵션을 지정한 경우에 기존에 존재하고 있는 데이터 세트를 교체하지 않는다.
    • NO :

         신규 공백 데이터 세트가 동일한 이름을 가지고 존재하는 데이터 세트를 대체하지 못하도록 지정한다.

    Tip  실수로 SET 구문에서 신규 MYLIB.B 공백 데이터 세트를 지정하여 기존에 존재하는 데이터 세트 MYLIB.B를 대체하는 문제를 방지하기 위하여 REPEMPTY=NO를 지정한다.
     
    libname libref SAS-library REPEMPTY=NO;
    data mylib.a set mylib.b;
    Tip : 데이터가 포함된 신규 데이터 세트로 기존에 존재하는 데이터 세트를 교체 할 수 있도록 하면서, 실수로 신규 공백 데이터 세트로 기존에 존재하는 데이터 세트를 덮어쓰는 것을 보호하기 위하여 REPLACE=YES와 REPEMPTY=NO를 함께 설정한다.

     


    3. 범 주

    SAS 기본 구문 (데이터 접근 구문)

     


    4. 비 교

    CATNAME 구문에서 카탈로그 결합, FILENAME 구문, LIBNAME 구문, ENCODING 데이터 세트 옵션, USER= 시스템 옵션

     


    5. 상세 설명

    1)  SAS 라이브러리에 라이브러리 참조자 지정하기.

    라이브러리 참조자와 SAS 라이브러리 사이의 지정된 관계는 SAS 세션이 연결되고 있는 동안이나 또는 다른 LIBNAME 구문을 사용하여 연결을 변경하거나 연결을 취소 할 때까지 유지된다. LIBNAME 구문의 가장 간단한 형태는 라이브러리 참조자(libref)와 SAS 라이브러리의 물리적 이름을 지정하는 것이다. (예제1을 참고)

     

    SAS Statements
    LIBNAME libref 'SAS-library';

     

    엔진 지정자는 일반적으로 사용되지 않지만, 상황이 모호한 경우에 기본 엔진을 지정하기 위하여 ENGINE= 시스템 옵션의 설정을 사용한다. 라이브러리에서 모든 데이터 세트가 단일 엔진으로 지정된 경우에 SAS는 기본으로 ENGINE= 옵션에서 지정 엔진을 사용한다. 대부분 상황에서 ENGINE= 시스템 옵션에 다른 엔진을 지정하여 기본 엔진을 대체 할 수 있다.

     

    SAS Statements
    LIBNAME libref engine'SAS-library' <options ><engine/host-options>;

     

    운영환경정보 : LIBNAME 구문을 사용하면 host-specific 정보가 필요 할 경우가 있다. 이 구문을 사용하기 전에 운영 환경에 대한 SAS 도움말을 참조하라.

     

    2) SAS 라이브러리에 지정된 라이브러리 참조자 해제하기.

    SAS 라이브러리에서 라이브러리 참조자를 해제하기 위하여 LIBNAME 구문에 라이브러리 이름과 CLEAR옵션을 함께 사용하라. 단일 라이브러리 참조자 또는 현재 지정되어 있는 모든 라이브러리 참조자를 해제 할 수 있다.

     

    SAS Statements
    LIBNAME libref CLEAR | _ALL_ CLEAR;

     

    3) SAS 라이브러리 속성을 SAS 로그에 작성하기

    SAS로그에 다수의 SAS 라이브러리 속성을 출력하기 위하여 LIBNAME 구문을 사용하라. 단일 SAS 라이브러리 속성을 출력하기 위하여 해당 라이브러리 참조자의 이름을 지정하고, 현재 세션에서 라이브러리 참조자가 할당된 모든 SAS 라이브러리의 속성을 출력하기 위하여 _ALL_ 옵션을 사용하라.

     

    SAS Statements
    LIBNAME libref LIST | _ALL_ LIST;

     

    4) SAS 라이브러리 결합하기

    다수의 SAS 라이브러리를 논리적으로 연결하는 경우에 하나의 라이브러리 참조자를 사용하여 모든 라이브러리를 참조 할 수 있다. 물리적 파일 이름 또는 이전에 할당된 라이브러리 참조자를 사용하여 라이브러리를 지정 할 수 있다.

     

    동일 LIBNAME 구문에서 여러 지정자를 조합하여 사용 할 수 있다. (라이브러리 참조자, 물리적 파일 이름 또는 라이브러리 참조자와 물리적 파일 이름의 조합). “예제2 : 논리적으로 SAS 라이브러리 결합하기” 를 참조하라.

     

    SAS Statements
    LIBNAME libref <engine> (library-specification-1<. . . library-specification-n>) options >;

     

    5) SAS 카탈로그 결합하기 XE "catalogs:catalogs 결합"  XE "카탈로그:카탈로그 결합

    다수의 SAS 라이브러리를 논리적으로 연결 할 때에 동일한 이름을 소유한 SAS카탈로그는 하나의 카탈로그로 결합된다. 예를 들어, 3개의 SAS 라이브러리가 개별적으로 CATALOG1 카탈로그를 포함하고 있으면, 라이브러리를 연결하는 경우에 동일한 이름을 소유한 카탈로그에 대하여 카탈로그 결합이 생성된다.

     

    SAS Statements
    LIBNAME libref <engine> (library-specification-1<. . . library-specification-n>) options >;

     

    라이브러리 결합 규칙

    라이브러리 결합을 생성 한 후에 간단한(연결되지 않은) 라이브러리 참조자가 사용되는 곳에서 결합한 라이브러리 참조자를 지정 할 수 있다. 다음 규칙은 SAS 파일이(SAS 라이브러리의 구성원) 결합된 라이브러리에서 위치하는 방법을 결정한다.

     

    • SAS 파일을 입력 또는 갱신을 위하여 여는 경우에 결합된 라이브러리를 검색하여서 지정된 파일이 가장 먼저 발견되는 파일을 사용한다.
    • 출력을 위하여 SAS 파일을 여는 경우에 라이브러리 결합에서 나열된 첫 번째 라이브러리에 파일을 생성한다.
    참고  결합 내의 다른 곳에 동일한 이름을 가지는 파일이 존재하더라도 새로운 SAS 파일은 첫 번째 라이브러리에 생성된다.

     

    • SAS파일을 삭제 하거나 이름을 변경하는 경우에 파일 중 처음 위치한 파일이 영향을 받는다.
    • SAS 파일의 목록을 출력하는 하는 경우에 파일 이름 중에서 하나만 보여준다.
    참고  결합 내에서 동일한 이름이 여러 개 존재하여도 단지 처음 위치한 파일의 목록만 보여준다.

     

    • 부모 파일과 동일한 라이브러리에 존재하는 경우에만 다른 파일(데이터세트의 인덱스와 같은)과 논리적으로 연결된 SAS 파일을 모두 출력한다. 예를 들어 라이브러리 ONE에 A.DATA과 존재하고 라이브러리 TWO에 A.DATA와 A.INDEX가 존재하면, 라이브러리 ONE에 존재하는 A.DATA가 출력된다.(규칙 4참조)
    • 결합에서 라이브러리가 순차적 속성으로 지정되면, 라이브러리 내의 모든 라이브러리는 순차적으로 처리된다.
    • 지정된 첫 번째 라이브러리의 속성이 결합의 속성을 결정한다. 예를 들어, 나열된 첫 번째 SAS 라이브러리가 “read only” 속성이라면, 결합되는 전체 라이브러리 속성은 “read only”가 된다.
    •  옵션 또는 엔진을 지정하는 경우에 완전한 물리적 이름을 지정한 라이브러리에만 옵션 또는 엔진이 적용된다. 라이브러리 참조자를 사용하여 지정된 라이브러리에는 적용되지 않는다.
    • 결합에서 라이브러리가 할당된 후에 라이브러리 참조자를 수정하여도 결합은 영향을 받지 않는다.

     

     


    6. 비교 사항

    • SAS 라이브러리를 참조하기 위하여 LIBNAME 구문을 사용하라. 외부 파일을 참조하기 위하여 FILENAME 구문을 사용하라. DBMS 테이블에 접근하기 위하여 LIBNAME, SAS/ACCESS 구문을 사용하라. 
    • SAS 카탈로그를 결합하기 위하여 CATNAME 구문이나 LIBNAME 구문을 사용하라. CATNAME 구문은 결합하기 원하는 카탈로그의 이름을 지정한다. LIBNAME 구문은 지정된 SAS 라이브러리에서 동일한 이름을 가진 모든 카탈로그를 결합한다.

     


    7. 관련 구문

    구문명 구문내용
    CATNAME 구문에서 카탈로그 결합 다수의 카탈로그에 대하여 단일 카탈로그 참조자(catref)를 지정하여 논리적으로 하나의 카탈로그로 결합하는 작업을 수행한다.
    DATA 구문 DATA 스텝 시작의 선언 및 출력 SAS DATA 세트의 이름을 설정하고, 또한 데이터 뷰(View)의 이름도 지정할 수 있다.
    ENCODING 데이터 세트 옵션  
    FILENAME 구문 SAS 파일 참조자(fileref)를 외부 파일 또는 출력 장치와 연결한다. 이와 반대로 파일 참조자(Fileref)와 외부 파일의 관계를 해제할 수 있으며, 외부 파일 속성을 출력할 수 있다. 
    LIBNAME 구문 SAS 라이브러리에 라이브러리 참조자(libref-단축이름)를 할당하거나 해제한다. 
    USER= 시스템 옵션  

     


    8. 예 제

     

    예제1 : 라이브러리 참조자(LIBREF) 지정과 사용하기

    다음 예제는 인용부호 안에 물리적 파일 이름을 지정하여 병합저장소에 라이브러리 참조자 SALES를 할당한다. 데이터 스텝은 SALES.QUARTER1 을 생성하여 물리적 파일 이름을 사용하여 참조되는 병합저장소에 데이터 세트를 저장한다. PROC PRINT 스텝은 2단계 이름을 가지는 SALES.QUARTER1을 출력한다.

     

    SAS Statements
    libname sales 'SAS-library';
     
       data sales.quarter1;
          infile 'your-input-file';  
          input salesrep $20. +6 jansales febsales 
                marsales;
       run;
     
       proc print data=sales.quarter1;
       run;

     

    예제2 : 논리적으로 SAS 라이브러리 결합하기

    • 다음 예제는 개별 물리적 파일 이름을 지정하여 3개의 라이브러리를 결합한다.
    SAS Statements
    libname allmine ('file-1' 'file-2' 'file-3');

     

    • 다음 예제는 SAS 버전 6의 파일을 포함하고 있는 라이브러리와 SAS 버전 9의 파일을 포함하는 라이브러리 2개의 SAS 라이브러리에 라이브러리 참조자를 할당한다. 이 방법은 파일과 application을 SAS버젼 6에서 SAS 버전 9으로 업데이트하는 경우에 유용하고, 2개 버전의 파일 모두를 쉽게 접근 할 수 있다.
    SAS Statements
    libname v6 'v6-SAS-library';
    
    libname v9 'v9-SAS-library';
    
    libname allmine (v9 v6);

     

    • 다음 예제는 동일한 결합 지정자에 양쪽 라이브러리 참조자와 물리적 파일 이름을 함께 지정한다. 
    SAS Statements
    libname allmine (v9 v6 'some-filename');

     

    예제3 : SAS 카탈로그 결합하기

    다음 예제는 각각의 물리적 파일 이름을 지정하여 3개의 SAS 라이브러리를 결합하고, 결합된 라이브러리에 라이브러리 참조자 ALLMINE을 할당한다.

     

    SAS Statements
    libname allmine ('file-1' 'file-2' 'file-3');

     

    개별 라이브러리에 SAS 카탈로그 MYCAT가 모두 포함되어 있는 경우에 libref.catref 형태로 ALLMINE.MYCAT 지정하면3개의 카탈로그 MYCAT에 저장되어 있는 카탈로그 엔트리에 접근 할 수 있다.

     

    예제4 : 1단계 이름을 사용하여 데이터 세트를 영구적으로 저장하기

    영구적으로 저장되어 있는 SAS 파일을 1단계 이름을 사용하여 편리하게 지정하기 위하여 USER= 시스템 옵션을 사용하라. 다음 예제는 파일 저장 위치에 라이브러리 참조자를 할당하는 LIBNAME 구문을 사용하지 않고 데이터 세트 QUARTER1를 영구적으로 저장 할 수 있다. 

     

    SAS Statements
    options user='SAS-library';
     
       data quarter1;
          infile 'your-input-file';  
          input salesrep $20. +6 jansales febsales 
                marsales;
       run;
     
       proc print data=quarter1;
       run;

     


     


    [SAS Statement] SAS 데이터 스텝 구문 사전 목록]

     

    SAS 함수(SAS Function) 리스트 링크
    반응형

    댓글