SAS Studio 에서 CAS 에 테이블을 올렸고 proc casutil; list tables; 로도 보인다. 그런데 데이터 관리(Data Explorer)나 데이터 준비 화면, Visual Analytics 의 데이터 선택 목록에는 나타나지 않는다.
CAS 테이블에는 성격이 다른 두 축이 있다.
| 축 | 의미 |
|---|---|
| 범위(scope) | 세션 범위인지 전역 범위인지. 세션 범위 테이블은 그 세션에서만 보인다 |
| 영속성 | 메모리에만 있는지, caslib 의 디스크에도 저장돼 있는지 |
PROC CASUTIL LOAD 는 기본적으로 세션 범위로 메모리에 올린다. 다른 애플리케이션은 각자의 CAS 세션을 쓰기 때문에, 그 세션에서 만든 테이블이 보이지 않는 것이다. casutil list tables 는 그 세션이 보는 목록이라 정상으로 보인다.
다른 세션과 애플리케이션에서 보게 하려면 승격(promote)해야 한다.
cas mysession;
libname public cas caslib="public";
proc casutil;
load file="/sasdata/<user>/sales_2025.sas7bdat"
outcaslib="public"
casout="sales_2025"
promote;
quit;
이미 올라간 세션 범위 테이블은 액션으로 승격한다.
proc cas;
table.promote / caslib="public", name="sales_2025";
quit;
승격은 메모리 안에서의 범위 문제를 해결할 뿐이고, CAS 가 재기동되면 인메모리 테이블은 사라진다. caslib 의 저장소에도 남기려면 저장한다.
proc casutil;
save casdata="sales_2025"
incaslib="public"
outcaslib="public"
casout="sales_2025"
replace;
quit;
save 는 caslib 경로에 .sashdat 파일을 만든다. 데이터 관리 화면은 caslib 에 실제로 존재하는 파일도 함께 보여 주므로, 저장해 두면 CAS 재기동 후에도 목록에서 사라지지 않는다.
cas mysession;
/* 1. 메모리에 올리면서 전역 범위로 승격 */
proc casutil;
load file="/sasdata/<user>/sales_2025.sas7bdat"
outcaslib="public"
casout="sales_2025"
promote replace;
quit;
/* 2. caslib 저장소에도 남긴다 */
proc casutil;
save casdata="sales_2025"
incaslib="public"
outcaslib="public"
casout="sales_2025"
replace;
quit;
| 위치 | load 만 | load(promote) | load(promote) + save |
|---|---|---|---|
| CAS 메모리 | 세션 범위 | 전역 | 전역 |
| 다른 세션·앱 목록 | 안 보임 | 보임 | 보임 |
| CAS 재기동 후 | 사라짐 | 사라짐 | caslib 파일로 남음 |
UI 에서 처리하려면 데이터 관리 화면에서 해당 caslib 을 선택하고 새로 고침한 뒤, 목록에 없으면 가져오기로 한 번 등록해도 된다.
CAS 에 올리기 전 단계, 즉 Compute 서버가 접근할 수 있는 경로에 SAS 데이터셋을 만드는 것은 LIBNAME 과 DATA step 으로 한다.
libname mylib "/sasdata/shared";
data mylib.sales_2025;
set work.sales;
run;
경로는 CASLIB 경로가 아니라 Compute 파드에 마운트된 경로여야 한다. 마운트되지 않은 노드 로컬 경로는 보이지 않는다.
%put %sysfunc(fileexist(/sasdata/shared));
Libref ... is not assigned 또는 Write access to member denied 가 나오면 OS 권한, 읽기 전용 마운트, 파드 보안 설정을 본다.