2016-03-29 26 views
1

我正在學習新的RSUBMIT,並且發現當我使用數據語句執行rsubmit時,它不會在set語句中使用本地庫?在程序語句中使用本地庫的SAS程序

我們該如何處理?

我的代碼

signon server; 

rsubmit; 
data x; 
set loca.mydata ;run; 
endrsubmit; 

,這將引發錯誤說

ERROR: Libref loca is not assigned. 

應該SET語句數據集也存在於遠程庫?

+0

嘿,如果您對答案感到滿意,請選擇適當的方式,請爲我的利益和其他用戶尋找正確的答案。 –

回答

5

當您提交一些代碼時,您基本上將它從其他地方發送到其他地方進行處理,意味着遠程服務器上沒有任何本地分配。用你的「失水」庫

的一種方式是,一旦你重新分配它的R-提交的代碼:

signon server; 
rsubmit; 
libname LOCA "<path here>"; 
data x; 
set loca.mydata; run; 
endrsubmit; 

第二種方法是使用inheritlib共享會話之間的庫:

signon server; 
rsubmit inheritlib=(LOCA=R_LOCA); 

data x; 
set R_LOCA.mydata; run; 
endrsubmit; 

在這兩種情況下,您還需要從遠程服務器檢索數據集「WORK.X」。我已經展示的兩種方法也可以讓你做到這一點。

+0

哇..這inheritlib選項是驚人的。我不必將數據移動到服務器。謝謝 – user3658367

+0

我很高興解決方案爲你工作。您也可以查看宏函數「%syslput」和「%sysrput」,它們允許您向/從遠程服務器發送和接收宏變量。附:如果上面的答案是正確的,請接受爲答案:) –

+0

INHERITLIB是否有任何限制 - 特別是,服務器是否必須通過共享訪問庫,或者SAS/CONNECT是否下載/上傳數據? – Joe