BookmarkSubscribeRSS Feed

[SAS 프로그래밍 고수 백승민] SQL에서 길이가 긴 변수에 대한 처리 where var1 NOT IN (select var2 from table)

Started ‎06-11-2020 by
Modified ‎06-11-2020 by
Views 80

* 질문 : http://cafe.daum.net/statsas/B3m/13625

 

ERROR: Index TEMPINDX cannot be created on file WORK._tf0002 because the length of the index

       value (1542 bytes) is too large. The index page size (currently 4096) must be large

       enough to store three index values plus a small overhead structure. Reduce the length

       of the index value or use the IBUFSIZE= option to increase the index page size (up to a

       maximum of 32,767 bytes).


 

 
proc sql;
create table aaa as
select count(*)
from xxx

where var1 NOT IN (select var2 from table)

;

quit;


 

이와 같은 문장을 실행하는데 var1 과 var2 에 들어가 있는 문자의 길이가 긴편입니다.

그런데 위의 에러 메시지가 로그에 출력 되었는데 어떤 부분의 문제일까요?

 

 

* 현재 답변 :

 

* 서브쿼리(Subquery)에 대하여 인덱스 버퍼를 사용하여 필터를 하는 듯하네요;
* 일단 ibufsize를 조정하면 해결 할 수 있습니다.
* 혹시 NOT IN 이나 IN 작업시 버퍼 수행에 관하여 아시는 분 계시면 답변 부탁드립니다;

data back;
length sex $2000.;
input var $1.;
sex=var;
cards;
1
;

* options ibufsize=32767;

proc sql;
create table aaa as
select *
from sashelp.class
where sex not IN (select sex from back);
quit;

Version history
Last update:
‎06-11-2020 09:30 PM
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