2016-09-19 50 views
0

我是SAS中的新手,來自SQL,所以我正在處理它們之間的差異。使用%運行SAS腳本包括

我有一個運行,除其他事物的SAS程序「Master.sas」,這樣的事情:

%include "c:\script1.sas"; 
%include "c:\script2.sas"; 
%include "c:\script3.sas"; 

的問題是,如果我選擇所有這些並運行它,它順序運行或平行? 例如,如果script2使用在script1中加載的表,它將無法成功運行嗎? 那麼,這個例子聽起來可能聽起來很明顯,但是如果script1計算一個變量,script2將會計算變量或使用它在運行時發現的內容會發生什麼(因爲,例如,script2之前運行的比script1)? 爲了澄清,我需要SAS依次運行它們,一個接一個。

在SQL存在「走出去」單獨批量處理,即:

CREATE TABLE XXXXX 
GO 

SELECT * FROM XXXXX 
GO 

如果有人試圖運行腳本出去,SQL運行它們在第二個腳本並行產生的錯誤,告訴「表XXXXX不存在「。

當SAS或SAS需要類似的東西時,只需在前一個完成時再處理?

在此先感謝!

+0

這些文件將按順序運行。 1; 2; 3。這裏是細節,如果你不想並行:https://communities.sas.com/t5/Base-SAS-Programming/running-Proc-Sql-jobs-in-parallel-and-in-sequence/ TD-p/147498 – sb0709

回答

1

%include將按順序運行。 SAS將運行第一%include,如果它只是在行代碼,然後打第二個,做同樣的,等

SAS中的等價物GORUN,靠了靠,但在大多數情況下RUN不實際上必須包括在內(儘管這被認爲是一種好的做法)。 SAS不會僅僅因爲您沒有運行而以並行模式運行,但它告訴SAS繼續並運行提供的代碼。不過不是適用於PROC SQL,但是;不支持運行組處理,並立即執行由;終止的每條語句。

有辦法讓它平行運行;例如,this hands-on workshop from SUGI 29 on Parallel Processing顯示瞭如何使用RSUBMIT來執行此操作。企業指南「允許並行處理程序(但在一個程序中不包含%include),如果您告訴它(但不是默認情況下)。