Leo Yeh's Blog

SAS Viya (58)

教學目標

初步了解如何將 SAS 9 資料集寫入至 SAS Viya 3.4 資料館中基本概念。

重點概念

首先現在許多 SAS 客戶還是習慣使用 SAS Enterprise Guide 工具進行資料整合,此時若我們要導入 SAS Viya 新平台,則能夠透過 SAS Enterprise Guide 工具以 CASUTIL 程序將 SAS 9 資料集匯入至 SAS Viya 平台中進行資料傳輸。所謂 CASUTIL 程序主要是針對 SAS Cloud Analytic Services 中的資料表,SAS資料庫中的 SAS 資料集和外部檔案文件進行操作,其主要有三大功能領域,分別為:

  1. 資料傳輸。
  2. 資料查詢。
  3. 資料管理。

接著資料傳輸領域方面主要是將 SAS 資料庫中的資料集載入至 SAS Cloud Analytic Services上的記憶體中,並且將 CASLIB 中的記憶體資料表儲存至與 caslib 相關聯的資料來源中,以及將資料來源中的文件載入至 SAS Cloud Analytic Services 上的記憶體中。在資訊查詢領域方面主要是查看欄位名稱、資料類型和其它欄位資訊,並且列出 CASLIB 中的記憶體資料表以及資料來源中的文件。至於在資料管理領域方面,刪除資料表和刪除檔案主要可以釋放伺服器中的資源。

再來除了 CASUTIL 程序之外,我們也能夠透過 PROC CAS 程序進行對應 PROC CASUTIL 的操作。所謂 PROC CAS 程序主要讓我們能夠透過基於 CAS 語言規範的程式環境,從 SAS 客戶端與 SAS Cloud Analytic Services (CAS) 進行互動,編程環境中使我們能夠執行 CAS 的操作,其具有幾個功能,分別為:

  1. 執行伺服器支援的任何 CAS 操作。
  2. 使用多個會話同步執行 CAS 操作。
  3. 使用函數表達式解析器對參數和結果進行 CAS 操作。

最後 PROC CASUTIL 操作相對簡單容易理解,而 PROC CAS 則可以進行更複雜的管理操作,但請注意 PROC CASUTIL 可能會因為授權碼的關係出現以下錯誤訊息:

1
2
ERROR: The CASUTIL procedure cannot be run.
ERROR: Procedure CASUTIL not found.

此時將會導致我們無法進行 CAS 的相關操作,當遇到此情況我們就僅能透 PROC CAS 進行 CAS 的相關操作。

PROC CASUTIL 程序範例 (SAS 9 資料集寫入至 SAS Viya 3.4 資料館中)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
OPTIONS CASHOST="<SAS Viya IP>" CASPORT=5570; 
CAS mysession ;
/* 載入 SAS 9 資料集至 CAS 資料館中,以及載入資料表至 CAS 記憶體中 */
proc casutil;
load data=sashelp.baseball outcaslib="Public" casout="baseball" replace;
quit;
/* 儲存資料檔案至 CAS 資料館中 */
proc casutil;
save incaslib="Public" outcaslib="Public" casdata="baseball" casout="baseball" replace;
quit;
/* 刪除 CAS 記憶體中的資料表 */
proc casutil;
droptable casdata="baseball" incaslib="Public";
quit;

PROC CAS 程序範例 (SAS 9 資料集寫入至 SAS Viya 3.4 資料館中)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
OPTIONS CASHOST="<SAS Viya IP>" CASPORT=5570; 
CAS mysession ;
/* 載入 SAS 9 資料集至 CAS 資料館中 */
libname mycas cas caslib="Public";
data mycas.baseball_dataset;
set sashelp.baseball;
run;
/* 載入資料表至 CAS 記憶體中 */
proc cas;
session mysession;
table.promote caslib="Public" name="baseball_dataset"
target="baseball" targetLib="Public";
run;
/* 儲存資料檔案至 CAS 資料館中 */
proc cas;
session mysession;
table.save caslib="Public" name="baseball"
table={caslib="Public" name="baseball"};
run;
/* 刪除 CAS 記憶體中的資料表 */
proc cas;
session mysession;
table.dropTable caslib="Public" name="baseball";
run;

相關資源

⬅️ Go back