使用 SAS
在此篇文章,我們將告訴您如何從 SAS 連線到 Canner Enterprise 中取得資料。
總覽
在 SAS 中,Canner Enterprise 支援以下兩種功能。第一種為 SQL Pass-Through Facility,透過此功能可以在 PROC SQL 中使用 Canner Enterprise 的 SQL 語法來取得資料。第二種為 SQL Functions,透過此功能,PROC SQL 會將 SAS 所使用的聚合函數例如 MIN, MAX, COUNT 等傳送到 Canner Enterprise 中執行。目前 Canner Enterprise 針對 SQL Functions 支援程度請參考文章最下方的支援列表。
使用 SQL Pass-Through Facility
我們在此示範使用 SQL Pass-Through Facility 的功能。
步驟 1: 在 SAS 中進行與 Canner Enterprise 的連線設定
首先,我們在 SAS 中新增一個 Program File,填入與 Canner Enterprise 進行連接的參數。

輸入以下參數進行連線設定。
libname A1
postgres server='testing-aws-standalone.dev.apps.cannerflow.com'
port=7432
user=canner
password='Mzc3ZTg4MzgtOGM2Zi00NWRmLTgwMWQtMzYwNGMxMzBhNWFiX1Rlc3RfU0FTOlpmTkdjTWVRUXFwbUhXV3N6ZlduSFdnc0dWb0s1MlUx'
database=wire_protocol_test_84077;
libname: 建立資料館路徑postgres server: 填入Canner Enterprise 的 Host 或是 IP 位址port: 填入7432user: 填入 cannerpassword: 填入 Personal Access Token (建立方式請參考 Personal Access Token 文件)database: 填入 Canner Workspace 中的 SQL Name (e.g.wire_protocol_test_84077)。SQL Name 位置位於 Workspace 中 Config 設定內容中。
當連線完成後,我們可以在 Log 日誌中看到以下連線成功訊息。

步驟 2: 讀取 Canner Enterprise 中的資料
在 PROC SQL 中使用 Canner Enterprise 的 SQL 語法,讀取在 Canner Enterprise 中此 Workspace 這張 Table lineitem_56783 的資料。

proc sql noerrorstop;
connect using A1;
Select * From connection to A1 (Select * From lineitem_56783 Limit 10);
quit;
SAS 提供 CONNECT TO 以及 CONNECT USING 兩種語法,在此我們以第二種作為範例,詳細其他語法使用方式請參考 SAS 產品文件的介紹。
完成: 測試連接結果
當成功讀取後,會在 SAS 畫面呈現讀取 Canner Enterprise 資料的結果。

回到 Canner Enterprise 中,針對同樣的 Table 做測試,確認兩邊資料呈現一致,驗證資料成功連接。

SQL Functions 支援列表
| Functions | Supported |
|---|---|
| ABS | ✅ |
| ARCOS | ✅ |
| ARSIN | ✅ |
| ATAN | ✅ |
| CEIL | ✅ |
| COALESCE | ✅ |
| COMPRESS | ✅ |
| COS | ✅ |
| COUNT | ✅ |
| EXP | ✅ |
| FLOOR | ✅ |
| INDEX | ✅ |
| LENGTH | ✅ |
| LENGTHN | ✅ |
| LOG | ✅ |
| LOWCASE | ✅ |
| MAX | ✅ |
| MIN | ✅ |
| MOD | ✅ |
| SIGN | ✅ |
| SIN | ✅ |
| SQRT | ✅ |
| STD | ✅ |
| SUBSTR | ✅ |
| TAN | ✅ |
| TRANWRD | ✅ |
| TRIMN | ✅ |
| UPCASE | ✅ |
| VAR | ✅ |
| ATAN2 | ✅ |
| DATE | ✅ |
| DATEPART | ✅ |
| DATETIME | ✅ |
| ROUND | ✅ |
| TODAY | ✅ |
| TRANSLATE | ✅ |
| AVG | Partial Support 1. Unsupport interval type. |
| SUM | Partial Support 1. Unsupport interval and money type. 2. bigint addition overflow. |
| COT | ❌ |
| LENGTHC | ❌ |
| LOG 10 | ❌ |
| LOG 2 | ❌ |
| REPEAT | ❌ |
| STRIP | ❌ |
| TIME | ❌ |
| TIMEPART | ❌ |