Leo Yeh's Blog

SAS Viya (62)

教學目標

初步了解 SAS Viya 中透過命令列介面 (CLI) 進行報表自動化處理的基本概念。

重點概念

首先 SAS Viya 的三大特點,主要為應用程式介面、可擴展系統架構和可信任資料科學,其中開放應用程式介面主要以 REST API 和命令列介面 (CLI) 與應用程式或內部系統進行整合,像是許多企業客戶皆希望以批次處理的方法能夠在報表建立時自動進行權限控管、本地化和發佈報表,此時我們就能夠透過命令列介面與 SAS Viya 整合應用完成在情境下自動執行一些無聊的重複性業務任務,像是當有新進人員加入時,我們需要開單請資訊單位手動將該人員加入特定群組,或者授權存取特定資料夾或報表,這時我們就能夠透過 Python 撰寫命令列介面客製自動化批次程式與企業內部系統進行整合,這看似功能簡單的自動化作業任務,實作與部署時會因企業內部系統環境和維運管理方式而有所挑戰。

接著在使用命令列介面 (CLI) 客製自動化批次程式之前,我們必須與 SAS Viya 進行授權,並且獲取授權 OAuth Token,主要有三個步驟,分別為:

  1. 使用 Consul Token 獲取 ID Token 以註冊新的客戶端 ID。
  2. 使用 ID Token 註冊新的客戶端 ID 和密碼的有效期。
  3. 獲取我們的客戶端 ID 的存取 OAuth Token。

請注意上述步驟只需在 OAuth Token 的有效期內完成一次,接著我們就能夠使用 OAuth Token 存取 SAS Viya 微服務進行報表相關的操作應用,像是權限控管、本地化和發佈報表。

SAS Viya 建立登入資訊

1
2
3
4
5
6
7
$ cd /opt/sas/viya/home/bin
$ ./sas-admin profile init
Enter configuration options:
Service Endpoint> …
Output type (text|json|fulljson)> json
Enable ANSI colored output (y/n)?>
Saved 'Default' profile to /home/christine/.sas/config.json.

SAS Viya 進行授權獲取授權 OAuth Token

1
$ ./sas-admin auth login

再來在 SAS Viya 中的報表主要是由作業系統中的資料檔案所產生,資料檔案主要會存在於作業系統中的某個資料夾中,此時就需要考慮作業系統權限的問題,而 SAS Viya 並沒有提供作業系統權限控管的命令列介面,當有了資料夾路徑之後,我們會設定 CAS 資料館對應資料夾路徑,以利將資料檔案載入至 SAS Viya 中進行處理,而 SAS Viya 就有提供 CAS 資料館權限控管的命令列介面,當有了 CAS 資料館之後,我們會在 SAS Viya 中建立資料夾和報表物件,而 SAS Viya 就有提供資料夾和報表內容權限控管的命令列介面,所以我們主要會透過 SAS Viya 的命令列介面針對 SAS Viya 平台中的任何資料館和物件進行權限控管。

CAS 資料館權限控管的命令列介面

1
$ sas-admin cas caslibs add-control --server serverA --caslib caslibA --group groupA --grant ReadInfo

資料夾和報表內容權限控管的命令列介面

1
$ sas-admin authorization authorize --permissions Read --group groupA --object-uri /reports/reports/33db163a-716e-4980-a5bc-6c42a0278c40

最後我們針對資料夾和報表內容的物件需要取得物件 ID,主要可以透過命令列介面取得物件 ID,以利進行後續的自動化操作,此外不同類型的操作皆會對應不同微服務,像是授權操作主要會對應至「sas-viya-authorization-default」微服務,以利我們後續針對個別微服務進行擴展提高報表自動化批次處理的效能。

查看特定資料夾中內容物件的詳細資訊的命令列介面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$ ./sas-admin folders list-members --path "/Products/SAS Visual Analytics/Samples"
{
"items": [
{
"description": "",
"id": "6805020d-c355-4f83-9e6c-282a96c6ce20",
"name": "Retail Insights",
"type": "child",
"uri": "/reports/reports/cbf97b0a-457d-4b4f-8913-547e0cdf390c"
},
{
"description": "",
"id": "634670e7-b69a-477f-80dc-7a961968f325",
"name": "Warranty Analysis",
"type": "child",
"uri": "/reports/reports/eb897d90-e4fd-4bdf-a764-b61af5c339b8"
},
{
"description": "",
"id": "246da46e-3b50-484c-9bcf-d6c3ac84ac20",
"name": "Water Consumption and Monitoring",
"type": "child",
"uri": "/reports/reports/98d351b1-2588-49a4-abae-b7157777e76c"
}
]
}

相關資源

⬅️ Go back