Leo Yeh's Blog

SAS Viya (30)

教學目標

初步了解 SAS/ACCESS Interface to Teradata 產品的基本概念。

重點概念

首先當我們使用 SAS Viya 進行分析時,主要皆是使用 CAS 伺服器進行分析,CAS 伺服器主要將資料儲存在記憶體中以利進行快速存取,而 CAS 伺服器則支援分散式處理大量的資料。其中我們主要是使用資料連接器將資料載入至 CAS 伺服器中,所謂資料連接器主要是連接第三方資料庫或資料來源的基礎,我們能夠分配控制使用存取資料的權限。此外在 Viya 平台中不同的資料連結器皆有對應的 SAS/ACCESS 介面,主要包括:

  1. Amazon Redshift
  2. DB2
  3. Hadoop
  4. Microsoft SQL Server
  5. ODBC
  6. Oracle
  7. PostgreSQL
  8. SAP HANA
  9. Teradata

接著我們透過 SAS/ACCESS Interface to Teradata 產品存取 Teradata 資料倉儲中的資料表時,請先確認版本是否符合,其僅能支援 Teradata 資料庫和客戶端工具 15.10 之後的版本,若版本不符合則無法進行存取。此外從 SAS Viya 3.3 開始,SAS/ACCESS Interface to Teradata 產品就有包括 SAS Data Connector to Teradata,若我們有適當的授權,則就能夠透過 SAS Data Connect Accelerator to Teradata 將大量資料載入至 CAS 伺服器中進行平行處理。

再來當我們透過 SAS/ACCESS Interface to Teradata 產品存取 Teradata 資料倉儲中的資料表時,若發生「Invalid descriptor index 」錯誤時,很有可能是該資料表使用 NUMBER 資料類型。因為若在 Teradata 中使用 SAS 產品使用 NUMBER 資料類型欄位進行運算時,則可能會發生資料裁斷導致資料完整性的問題。此外 NUMBER 資料類型比 SAS 9.4 支援的精準度更高,所以若在 SAS 平台中新增 NUMBER 資料類型的支援將會導致數值不正確。

最後若我們在計算中使用 NUMBER 資料類型欄位,則建議能夠建立 Teradata 檢視表中使用 CAST() 函數轉換適當的資料類型。至於在 SAS 平台中支援的資料類型欄位有哪些,請參考下表,更多資訊請參考官方文件

SAS 資料類型 SAS 格式 Teradata 資料類型
字元 $w.、$CHARw.、$VARYINGw. CHAR[w]
字元 $HEXw. BYTE[w]
數值 A date format DATE
數值 TIMEw.d TIME(d)
數值 DATETIMEw.d TIMESTAMP(d)
數值 w.(w≤2) BYTEINT
數值 w.(3≤w≤4) SMALLINT
數值 w.(5≤w≤9) INTEGER
數值 w.(≤10w≤18) DECIMAL
數值 w.(w≥19) FLOAT
數值 w.d DECIMAL(w-1,d)
數值 所有其它數值 FLOAT

總結 SAS Viya 平台中雖然支援許多第三方資料庫或資料來源,但是當我們載入資料至 CAS 伺服器時,往往會面臨部份資料表無法正常載入發生錯誤,此時請透過文件確認是否該資料表中的欄位不支援,若是支援則建議建立轉換之後的檢視表,以利進行資料載入相關營運作業。

相關資源

⬅️ Go back