第 4 章:資料管理

此章節主要介紹 SAS 平台如何落實資料管理

基本介紹

首先根據 TOGAF 企業架構的框架標準中提到當企業選擇進行大規模的架構轉型時,理解和解決資料管理的問題非常重要,結構化和全面的資料管理方法將能夠有效的利用資料來充分利用其競爭優勢,其中考慮因素主要包括:

  1. 明確定義情境中的哪些應用程式元件將作為企業資料記錄或參考系統?

  2. 明確定義範圍標準是否需要採用包括軟體在內的所有應用程式元件?

  3. 清楚了解業務、流程和服務將會如何使用資料的方式為何?

  4. 清楚了解建立、儲存,傳輸資料處理的方式和位置為何?

  5. 支援應用程式之間資訊交換需求進行資料轉換的複雜程式和資料整合的處理方式為何?

此外除了有關資料管理的考慮因素之外,企業針對資料治理有必要考慮更多的因素,其中包括必須具有組織結構和管理轉型的單位,並且擁有必要的資料管理相關的應用程式軟體工具,以利管理資料整個生命週期的治理方式,而此篇主要會先以資料管理為主。

接著資料管理為何如此重要,就像日常生活中的水一樣,有良好和乾淨的水是維持生命的關鍵,此時如果水源受到污染,則肯定會有一些負面後果,而為何得到更好的結果,我們將會針對水進行過濾。然而資料類類似於水,未受污染的資料是企業成功導入進階分析、機器學習和人工智慧應用的關鍵,但是為分析準備資料會帶來不同的結果要求,而不僅是在資料倉庫中所儲存的資料,管理未經過濾的資料非常困難,更何況要將準備好的資料進行進階分析、機器學習和人工智慧應用。根據過往的經驗大多數的資料科學家將 50% 至 80% 的模型開發時間用於準備資料,這將會影響用於產生見解的時間,此外資料科學家和業務分析師通常會提前知道他們想要的資料,且在準備和建模之前進行解析或視覺化,但是他們通常不知道哪些資料變數最適合,此時識別和存取正確的資料將會是非常重要的第一步,因為強大的迭代式資料準備過程主要是將優秀模型與特殊模型區分開來的過程。而當識別出業務問題時,則就會開始迭代式資料準備過程,同時在建立有效模型之前,我們更需要一致和可靠的資料準備分析,根據 SAS 官方所提供的白皮書中就有提到有關資料管理的最佳實務,分別為:

  1. 簡化對傳統和現代資料的存取。

  2. 利用最新分析技術加強資料科學家的工具庫。

  3. 在現有流程中建立清理的品質。

  4. 使用靈活的操作技術建立資料。

  5. 跨資料管理和分析領域共享中繼資料。

因此對於為分析準備資料的資料科學家和業務分析師來說,資料管理相關技術就像一個資料過濾器將能夠用於存取、清理、轉換和建立資料,以利在此過程中提高價值與生產力和在最短時間內作出更佳的決策。

再來 SAS 針對資料準備工作,主要提供 SAS Data Preparation 解決方案將能夠為使用者提供了一個互動式的自助服務環境,其主要用於存取,整合和清理資料,以便為報表或分析做好準備,透過 SAS Data Preparation 解決方案將能夠節省準備資料初步任務的時間,並且透過直觀的操作界面無需撰寫 ETL 程式或 SQL 程式進行資料準備任務,以利資料科學家和業務分析師將能夠花費更多時間用於將準備好的資料進行進階分析、機器學習和人工智慧應用。此外 SAS Data Preparation 解決方案主要是基於 SAS Viya 分析平台所以具有高效能的在記憶體平行處理速度和多處理節點的擴展性,以利在縮短時間內完成資料準備的工作,至於 SAS Data Preparation 解決方案中則針對不同處理目的提供對應的產品,請參考下表。

處理目的

產品

探索和管理資料

SAS Environment Manager, SAS Visual Analytics

解析資料輪廓

SAS Data Explorer

準備和清理資料

SAS Data Studio

瀏覽資料關係

SAS Lineage Viewer

執行資料品質

SAS Data Quality

最後根據最近 IEEE Spectrum 才剛釋出程式語言排行榜,這些資訊來源主要包括谷歌搜尋、谷歌趨勢、推特、GitHub、Stack Overflow、Reddit、… 等網站內容,而 Python 程式語言再次名列第一,至於名列之後的程式語言分別是 Java、C、C++和 R 程式語言,Python 程式語言受歡迎程度在很大程度上受到大量可用的函式庫所影響,特別是在人工智領域,Keras 函式庫是深度學習開發人員中的關鍵函式庫,並且 Keras 提供了 TensorFlow、PyTorch 和 MXNet 深度學習框架和工具包的介面,此外 R 程式語言主要用於數學計算,其由於大數據相關的分析應用越來越被廣泛使用。因此企業客戶最關心的問題,則是透過 SAS Data Preparation 解決方案所準備就續的資料,除了在 SAS Viya 分析平台中使用之外,是否能夠直接透過 Python、R、Java 等用於進階分析、機器學習和人工智慧主流程式語言直接存取用於建立模型嗎?答案是肯定的, SAS Data Preparation 解決方案基於 SAS Viya 分析平台,因此所有準備就緒的資料皆會被儲存至 CAS 伺服器的記憶體中,此時 SAS 官方就有針對使用不同程式語言的開發者提供直接透過 CAS 資料館存取 CAS 伺服器記憶體中準備就緒的資料,更重要的是 CAS 資料館具有強大且完整的權限控管和加密保護皆是對於企業資料管理非常關鍵的功能。

總結 SAS Data Preparation 解決方案對於企業資料管理不僅提供完整的軟體工具之外,更提供在記憶體中高效能準備資料,以及強大且完整的權限控管和加密保護功能,以利滿足企業資料管理的複雜需求。

SAS 9

首先 SAS 9 平台中的應用程式主要可分為三大部份,分別為資料管理、分析和報表,其中資料管理主要有四個重要的工具,分別為:

  1. SAS Data Integration Studio:主要提供資料管理基礎功能,其中包括管理資料來源,資料目標和流程,建立工作來組織一組來源,目標和過程,管理自動產生或手動建立的程式碼

  2. DataFlux Data Management Studio:主要提供資料管理進階功能,其中包括資料品質,實體解析和監視工具,以利將資料品質整合到資訊管理程序中。

  3. SAS OLAP Cube Studio:主要提供多維度資料集設計功能,其中包括輸入有關資料來源的資訊用於載入多維度資料集,定義維度,層次結構和等級別,並且提供量測值的詳細資訊,以及設定聚合值。

  4. SAS Information Map Studio:主要提供來自不同類型資料來源的資訊對應功能,其中包括作為企業使用者和資料倉儲之間的橋樑,合併業務規則和消除需要了解的資料關係。

除了上述四個用於資料管理重要的工具之外,我們最常使用 SAS Enterprise Guide 工具同時進行資料管理、分析和報表。此外作為一位資料整合開發人員主要工作就是收集,清理和儲存報表和分析所需的資料,這時主要會使用 SAS Data Integration Studio、 DataFlux Data Management Studio 和 SAS Enterprise Guide 工具為主。

接著資料整合主要有以下標準步驟流程,分別為:

  1. 執行變更管理:主要定義變更管理,並且在現有的環境執行變更管理的基本功能。

  2. 註冊來源資料表的中繼資料:主要透過「Register Tables Wizards」和「External File Wizards」能夠讓我們將許多類型的資料來源註冊為中繼資料的資料表,像是 SAS 資料表、ODBC 資料表、… 等。

  3. 註冊目標資料表的中繼資料:主要透過「New Table Wizard」能夠讓我們將目標資料表註冊為中繼資料的資料表,其中包括資料表類型、資料表函式庫、資料表名稱、資料表欄位、資料表索引、…等。

  4. 建立載入資料表的工作任務:主要定義從來源資料載入或產生目標資料表的工作流程,其中包括資料提取、轉換和載入至目標資料表中。

  5. 定義星狀結構資料模型和工作任務的中繼資料:主要定義星狀結構資料模型通常用於資料市集的資料模型,其中包括一個事實,並且參考任意維度數量的資料表,事實資料表主要儲存商業交易資料,像是價格和數量,而維度資料表主要儲存上下文資訊,像是客戶資訊、產品資訊和時間資訊。

  6. 執行工作任務的功能:主要透過匯入 SAS 程式碼建立工作任務用於處理客製化工作任務,像是統計資訊。

  7. 執行不同類型轉換和使用者定義轉換的功能:主要提供提取、摘要統計、回傳碼檢查、資料驗證、增加、排序、排名、查找、標準化、循環… 等轉換的功能,此外更透過「New Transformation Wizard」能夠讓我們建立使用者定義轉換的處理程序。

  8. 使用資料庫:主要在資料庫中執行分析處理,執行擷取、載入和轉換處理 (ELT) 或使用資料庫中函數。

  9. 部署工作任務:主要針對工作任務部署排程,部署批次和部署儲存程序。

  10. 執行資料品質的功能:主要搭配 DataFlux 軟體針對資料品質的需求進行審查。

再來目前 Git 已經在資料科學和 DevOps 營運中發揮更大的作用,自動化將會是最關鍵的工作,其中包括簽入、簽出和提交,然而 SAS 目前已將 Git 整合至更多的 SAS 產品中,像是在 SAS 9.4 M6 版本中的 SAS Data Integration Studio 4.904 就支援 Git 進行版本控管,目前已經有很多客戶要求在已支援的版本控制系統,像是 CVS 和 SVN 中增加 Git 版本控制系統,請注意 Git 主要是一個版本控制系統,其主要是一種用於管理源始碼歷史記錄的工具,至於 GitHub 是 Git 儲存庫的託管服務,因此 Git 是工具,然而 GitHub 則是使用 Git 工具的服務,因此我們將會透過以下步驟整合 Git 操作,分別為:

  1. 建立新工作:主要開始一個新的資料整合工作任務。

  2. 修改現有工作:主要修改已經在 Git 儲存庫中的工作任務。

  3. 比較和管理版本:主要比較同一個資料整合工作任務中兩個版本的變更。

  4. 恢復版本:主要停用工作任務和存檔版本,或者從 Git 儲存庫更新工作任務。

  5. 刪除現有作業和版本:主要刪除工作任務時,也會同步刪除 Git 儲存庫中的工作任務。

至於詳細的 SAS Data Integration Studio 整合 Github 進行互動式的版本控管之圖文操作請參考官方文件

最後 SAS Data Integration Studio 也支援 SAS Viya 分析平台中的 CAS 分散式雲端分析服務,主要透過 SAS Management Console 工具設定 CAS 引擎庫的中繼資料定義,至於 CAS 引擎庫不同於 CAS 函式庫,CAS引擎庫主要是指向 CAS 函式庫的 SAS 函式庫,而 CAS 函式庫是直接管理 CAS 中的物件,當設定完成 CAS 引擎庫的中繼資料之後,我們就能夠使用「Cloud Analytic Services Table Loader」資料轉換將將不同類型的資料載入至 CAS 伺服器中,至於詳細的 SAS Data Integration Studio 整合 CAS 分散式雲端分析服務進行互動式的資料轉換之圖文操作請參考官方文件。此外 SAS 在於資料整合方面已經連續九年被 Gartner 研究機構評選為領導者,主要在於視覺完整性和執行能力方面被獲得到認可,不僅支持各種資料交付方式,而且還可以將這些不同的數據交付方式,像是資料虛擬化和 ETL 組合在一起,並且提升有關中繼資料之動態彈性的優化和進階的輔助設計相關功能,以利將中繼資料應用在機器學習,以利幫助開發人員在整合設計和實現中提供不同程度的支援和自動化。

SAS Viya

首先資料整合和資料準備是兩個不同的方法,這幾十年來 SAS 9 平台支援傳統資料管理進行資料整合方法為企業提供了許多成熟的解決方案,並且連續九年被 Gartner 評選為資料整合工具的領導者,其中主要管理結構化資料為主,並且包括整合、品質和治的相關應用程式支援資訊人員和 ETL 開發者。然而若要推動進階分析、機器學習和人工智慧,則需要採用不同的資料準備方法,此時 SAS Viya 平台支援資料準備,其主要是透過自助式互動的方式進行資料的準備,過程中無需撰寫程式碼,更能夠搭配資料品質的強大功能進行資料轉換和清理,並且在分散式平行架構上進行快速和高效的資料處理,加速分析生命週期,以利滿足商業分析師和資料科學家的需求,至於資料整合和資料準備的差別,請參考下表。

資料整合

資料準備

使用者

資訊人員和 ETL 開發者

商業分析師和資料科學家

撰寫程式

目標用途

資料市集、資料倉儲和資料湖

資料探索、資料分析和資料湖

資料類型

結構化資料

多元類型資料

資料來源

以內部系統為主

以外部系統為主

資料模型

複雜

簡單

資料時間

日/週/月

分鐘/小時

使用目的

業務案例

進階分析

接著資料準備主要會進行資料存取、資料探索、資料清理、資料轉換和資料分析,其中從資料存取至資料轉換主要會花費 80% 的時間,而剩下 20% 的時間才會進行資料分析,此時 SAS Viya 平台所提供的資料準備功能,我們能夠在分為五個階段,分別為:

  1. 管理資料:存取資料載入資料至 CAS 中,並且存取資料結構和內容。

  2. 準備資料:選擇資料、操作資料,並且將資料結構化為需要的資料格式。

  3. 清理資料:將資料轉換為一致性的格式。

  4. 管理和治理資料:自動化資料準備和監控任務,並且更容易管理跨使用者環境。

  5. 協同合作:分享資料和資料準備計劃,並且促進不同使用者之間的合作。

不同階段將會對應使用 SAS Viya 分析平台中不同的工具,管理資料階段主要會使用 SAS Data Explorer 用於將 SAS 資料集,關聯式資料庫之資料表,分隔檔案和社群媒體資料載入至 SAS Viya 分析平台中以進行查看和進階分析,SAS Environment Manager 用於管理 CAS 資料庫和資料表,類似於 SAS Data Explorer 的操作界面,並且為資料連接建立和維護身份驗證網域,以及管理可用於資料的使用者定義格式和管理品質知識庫。準備資料階段主要會使用 SAS Data Studio 用於進行資料操作和將新資料匯總至 SAS Viya 分析平台中進行資料轉換,此時準備資料的使用者必須屬於資料建立者客製群組中的成員之一,過程中主要進行資料欄位轉換、資料列轉換、多輸入轉換和客製化轉換。清理資料階段主要會使用 SAS Data Studio 用於使用 SAS 品質知識庫 (Quality Knowledge Base,QKB) 中定義的資料品質轉換功能,其中包括解析、擷取欄位、標準化、對應、分群、記別分析、… 等功能。管理和治理資料階段主要會使用 SAS Lineage Viewer 用於顯示 SAS Viya 分析平台中物件的關係,像是資料來源和資料計劃,SAS Environment Manager 用於管理資料計劃和報表等內容,並且提供計劃和監視工作任務排程的執行狀態,以及查看日誌的功能。協同合作階段主要會使用 SAS Drive 用於企業組織中共享資料表,報表,資料計劃和工作任務,以利促進使用者之間的協同合作。

再來資料準備將會因為資料量和資料來源的數量不斷增加導致可能成本高昂且複雜,雖然傳統的資料管理流程能夠產生一定程度的數據,但是自助式服務的資料準備方式將能夠在短時間內準備用於分析的資料,同時目前有許多的公司主要是以資料驅動為主,因此企業主要會根據資料做出決策分析。此外商業分析師和資料科學家根據過往的經驗通常會看到特別需要用於分析模型的缺少資料,此時透過自助式服務進行資料準備任務將能夠獲取資料,並且用於建立分析模型進行實驗比較,以利加速分析生命週期,所謂分析生命週期主要有兩個主要階段,分別為發現和部署。在發現階段中,我們主要提出一個問題透過詢問業務問題來推動發現過程,並且定義業務需要知道的內容,然後必須理解業務所要表達問題是否能夠使用預測分析來解決,此時預測分析就會需要適當準備適合的資料,但是當來自不同來源和不同格式的資料需要用於預測分析模型的輸入時,則資料準階段就會變得更加重要,同時我們主要使用互動自助式的視覺化工具用於探索資料,此時相關工具需要讓不同的使用者進行操作,從沒有統計知識的商業分析師至擅於實驗分析的資料科學家,相關工具必須能夠搜索關係、趨勢和模式,以利更深入的了解資料,因此資料探索階段細分化了業務問題,並且開發和測試如何解決業務問題相關的想法,但是這可能會需要增加、刪除和組合變數,此時將會需要更多的資料準備任務,以及當我們使用分析和機器學習建模演算法來確定資料中的關係並回答業務問題,並且分析工具將會尋找預測所需的可靠資料和建模技術進行組合,沒有一種演算法始終表現最佳,解決業務問題最適當演算法的分析模型將取決於資料準備,再透過實驗找出問題背後最關鍵和可靠的答案。在部署階段中,我們主要在開發和增加更多資料,並且建立模型之後,我們將會需要落實和進行模型部署,此時資料準備不會停止,因為我們必須透過不同使用者協同合作,以利持續準備最新的訓練資料用於建立分析模型,並且部署最適當演算法的分析模型至正式環境中。

最後資料準備工具必須與資料治理功能密切配合,僅有當我們擁有高品質資料時,自助服務才能夠真正發揮用途,以利加速分析生命週期。然而許多自助式服務的資料準備工具皆沒有資料治理的功能,為什麼這很重要呢?我們皆知道垃圾進,垃圾出 (Garbage In Garbage Out,GIGO) 的觀念,如果將錯誤和無意義的資料輸入電腦系統,電腦自然也一定會輸出錯誤和無意義的結果,在企業組織中分析主要會由不同的使用者群組分工合作完成整個分析生命週期,其中包括資訊人員,ETL 開發者,商業分析師和資料科學家,此時就會需要使用相同的資料,並且使用相同的原則和標準處理流程,此時這種協作就必須遵循受資料治理原則的驅動。換句話說,資料治理是該過程的關鍵部分,主要用於啟用更好的合作和共同的工作,當然資料準備過程和最佳實務仍然必須符合企業組織的資料治理流程和規則,所有與資料相關的流程都必須符合企業組織的整體資料治理解決方案。

總結我們將能夠透過 SAS Data Preparation 解決方案在分析生命週期發現和部署階段中讓不同使用者協同合作,以利持續準備最新的訓練資料用於建立分析模型。

開始使用

  • 登入至 SAS Viya 分析平台。

  • 在畫面左上方點選【顯示應用程式功能表】鈕。

  • 選取【管理資料】。

  • 點選【資料來源】頁籤。

  • 選取【cas-shared-default】。

  • 選取【CASUSER (...)】個人檔案系統資料館。

  • 目前個人檔案系統資料館中沒有任何資料,所以選取【匯入】頁籤。

  • 點選【匯入】頁籤,點選【本機檔案】。

  • 點選【hmeq.csv】資料檔案。

請前往【 SAS® Viya® Example Data Sets】官方網站下載範例資料檔案。

  • 點選【選取目的地】。

  • 選取【CASUSER (...)】,按下【選取】鈕。

  • 點選【取代檔案】,按下【匯入項目】鈕。

  • 完成匯入資料檔案,此時選取【資料來源】頁籤。

  • 確認【HMEQ】資料檔案已經匯入完成,並且點選【HMEQ】查看詳細資料。

出現閃電圖示代表資料已經載入記憶體中。

  • 選取【樣本資料】頁籤,查看樣本資料。

  • 選取【分析】頁籤,按下【執行分析】鈕。

  • 查看【HMEQ】資料的分析資訊。

  • 在畫面左上方點選【顯示應用程式功能表】鈕。

  • 選取【準備資料】。

  • 點選【新計畫】。

  • 點選【HMEQ】資料,按下【確定】鈕。

  • 點選【列轉換】中的【分析分割】,按下【增加轉換】鈕。

  • 在可用的欄中的【BAD】欄位連按左鍵二下,將其加入至選取的欄中。

  • 將下方訓練、驗證和測試的比例,分別設為【70】、【20】和【10】,按下【執行】鈕。

  • 此時已經在工作階段中建立新的【HMEQ】資料,並且增加新欄位【_PARTIND_】,其中值為 0、1、2,分別代表為驗證、訓練和測試。

  • 按下【儲存】鈕。

  • 按下【新增資料夾】鈕,以利在【My Folder】中建立資料夾。

  • 輸入【資料分析專案】。

  • 修改名稱為【資料計劃 1】,按下【儲存】鈕。

  • 選取【更多】鈕,點選【建立工作…】。

  • 修改名稱為【資料計劃 1_排程工作】,按下【確定】鈕。

  • 在畫面左上方點選【顯示應用程式功能表】鈕。

  • 選取【管理環境】。

  • 選取【工作】。

  • 監控【工作】執行狀態,點選【排程】頁籤。

  • 選取【資料計劃 1_排程工作】,按下【排程】鈕。

  • 按下【增加觸發】鈕。

  • 根據現況需求設定觸發時間。

  • 按下【儲存】鈕。

  • 勾選【新增觸發】,按下【儲存】鈕。

  • 選取【資料】。

  • 查看【HMEQ_NEW】資料的修改時間。

  • 返回【工作】,持續按下【使用目前篩選重新整理工作清單】鈕,直到【資料計劃 1_排程工作】已經執行成功。

  • 選取【資料】,按下【重新整理】鈕。

  • 確認【HMEQ_NEW】資料的修改時間。