對於熟悉資料庫應用操作與商業智慧分析(Business Intelligence)的朋友們應該對 Join Table 這個技術不陌生,基本上就是透過資料庫 SQL 語言中的 JOIN 指令將來自於相同資料庫中的不同資料表(Table)關聯在一起,形成一個基於共用鍵值(Key)欄位的合併資料表,例如透過 Join 的方式關聯訂單主表與訂單明細表,最終產生一個完整的訂單資料表。在 IBM SPSS Modeler 中,我們不需要撰寫 SQL JOIN 指令就能實現資料表關聯,甚至還可以透過簡單的操作將來自不同來源的資料進行整合,這種作法稱之為 Data blending(數據混合)。本篇文章將透過圖文教學的方式引導大家使用 SPSS Modeler 進行異質資料來源的整合,同時我也會分享快速進行欄位篩選與建立衍生欄位的方法。
為了說明操作的流程,我們將透過 SPSS Modeler 分別連線到 Microsoft SQL Server、Excel 檔案、CSV 檔案等三種不同的資料來源,接著使用「合併」節點將三張資料表合併成一個資料來源,最後快速執行資料篩選與建立衍生欄位的操作。下圖是這三張資料表的名稱與欄位定義,我們將使用客戶編號作為鍵值來合併這三張表,紅色字的名稱代表各自的鍵值欄位名稱,我們刻意將其定義成不同的名稱,但它們的資料內容格式是相同的。
1.讀取不同來源的資料
SPSS Modeler 係透過 ODBC 的方式與各種資料庫系統進行連線,建立 ODBC 連線時,建議安裝 IBM SPSS Data Access Pack 軟體,該軟體提供各種最佳化的 ODBC Driver,可提升連線效能。以 Windows Server 作業系統為例,要新增 ODBC 資料來源,可以點擊 Windows > 開始 > 系統管理工具 > ODBC 資料來源(64 位元),切換至「系統資料來源名稱」頁籤,新增系統資料來源。
進入「建立新資料來源」視窗後,選擇「IBM SPSS OEM 8.0 SQL Server Wire Protocol」驅動程式,點擊「完成」按鈕。接著輸入 SQL Server 資料庫連線所需的相關配置,我們可以先點擊「Test Connect」按鈕測試連線是否成功。
確認 SQL Server ODBC 連線已成功建立於「系統資料來源」清單中,接下來我們就可以在 SPSS Modeler 中使用這個 ODBC 連線取得 SQL Server 資料庫中的 applicant_loan_data 資料表資料。
開啟 SPSS Modeler 程式,點擊主選單「工具」>「資料庫」,於「資料庫連線」視窗中確認之前建立的 SQL Server ODBC 連線出現在連線資料來源清單中。請選取這個連線並輸入必要的使用者帳號及密碼後,點擊「確定」關閉視窗。
切換至「來源」節點工具箱,滑鼠雙擊「資料庫」將資料庫連線節點加入至 SPSS Modeler 串流畫布中,滑鼠雙擊「SQL 資料庫連線」節點進行設定。
在設定視窗中,請點擊「表格名稱」欄位右方的「選取」按鈕,選擇 dbo.applicant_loan_data 資料表。下方的「引述表格與欄名稱」選擇「絕不」,完成配置後可以先點擊上方「預覽」按鈕確認連線已完成,或點擊「確定」按鈕完成設定。
我們可以在「SQL 資料庫連線」節點後方鏈結一個「輸出」節點工具箱中的「表格」節點,然後執行這個串流檢視 applicant_loan_data 資料表的內容。
回到串流畫布中,切換至「來源」節點工具箱,滑鼠雙擊「EXCEL」將 EXCEL 節點加入至 SPSS Modeler 串流畫布中,滑鼠雙擊「EXCEL」節點進行設定。
在設定視窗中,「檔案類型」請選擇「Excel 2007-2016(*.xlsx)」,點擊「匯入檔案」欄位右方的「...」按鈕,選擇儲存於本機路徑中的 applicant_financial_data.xlsx 檔案,其餘選項使用預設值即可,完成後點擊「確定」按鈕。
我們可以在「EXCEL」節點後方鏈結一個「輸出」節點工具箱中的「表格」節點,然後執行這個串流檢視 applicant_financial_data.xlsx 檔案的內容。
回到串流畫布中,切換至「來源」節點工具箱,滑鼠雙擊「變數檔案」將節點加入至 SPSS Modeler 串流畫布中,滑鼠雙擊「變數檔案」節點進行設定。
在設定視窗中,點擊「檔案」欄位右方的「...」按鈕,選擇儲存於本機路徑中的 applicant_personal_data.csv 檔案,其餘選項使用預設值即可,完成後點擊「確定」按鈕。
我們可以在「CSV」節點後方鏈結一個「輸出」節點工具箱中的「表格」節點,然後執行這個串流檢視 applicant_personal_data.csv 檔案的內容。
到目前為止,我們已經完成了三個資料來源節點(資料庫、EXCEL 檔案、CSV 檔案)的配置,並使用「表格」節點作為檢視資料的輸出節點。
2.合併不同來源的資料
開始合併資料之前,我們可以先啟用 SPSS Modeler 的節點資料快取功能,這個功能可以將執行過程中的資料儲存於暫存檔案中,避免資料處理及分析過程中多餘的資料讀取時間。請以滑鼠右鍵點擊資料來源節點,於選單中點擊「快取」>「啟用」。
快取功能啟用後,節點圖示的右上角會顯示一個文件圖示。當我們執行串流後,流經該節點上的資料就會被快取,此時這個文件圖示將變為綠色。快取功能適合用於排序、合併或聚集這類較耗時的作業中。有關 SPSS Modeler 節點快取功能的詳細說明,請參閱官方文件:節點快取。
進行資料表合併時,需要選擇一個欄位作為資料關聯的依據(需要有相同的值),接下來我們將說明最簡單的方式,也就是使用相同的欄位名稱(作為 KEY 值欄位),將這三個資料表合併在一起。從下圖可以觀察到,我們預計使用的客戶編號欄位在三個資料來源中的欄位名稱都不相同,因此我們需要先將它們統一命名為:CUID。
在 SPSS Modeler 中,變更資料來源的欄位名稱是一件很容易的事,請以滑鼠雙擊資料來源節點,於設定視窗中切換至「過濾器」頁籤,在下方欄位列表中,將右手邊的客戶編號欄位名稱變更為 CUID 即可。
完成這三個資料來源的 KEY 值欄位重新命名後,我們已將客戶編號欄位統一命名為 CUID,接下來就可以使用「合併」節點進行資料合併。
回到串流畫布中,切換至「資料列處理」節點工具箱,滑鼠雙擊「合併」將節點將它加入至 SPSS Modeler 串流畫布中,請以滑鼠中間鍵建立三個資料來源與「合併」節點之間的鏈結,完成後滑鼠雙擊「合併」節點進行設定。
在「合併」節點的設定視窗中,切換至「合併」頁籤,「合併方法」選擇:鍵值;接著點選下方「可能的索引鍵」清單中的 CUID 欄位,點擊向右箭頭按鈕將其加入到右邊的「合併索引鍵」清單中。
當我們完成 KEY 值欄位設定後,可以先點擊「預覽」按鈕,確認我們已經正確完成了三個資料表的合併,合併後的欄位共 29 個。點擊二次「確定」按鈕,完成「合併」節點的設定。
為了加速後續的資料處理速度,我們可以啟用「合併」節點的快取功能。接著在「合併」節點後方鏈結一個「輸出」節點工具箱中的「表格」節點,點擊選取這個「表格」節點,然後點擊工具列中的「執行選項」執行這個分支串流(完成後資料視窗會自動出現),在右方「輸出」面版中也會出現本次執行的輸出結果。
到目前為止,我們已經完成了三個異質資料來源的資料合併,請點擊「表格」節點,切換至「格式」頁籤,這裡可以觀察到三個資料表的欄位已經成功被合併在一個資料表中,該資料表以客戶編號(CUID)作為關聯 KEY 值。
補充:資料合併的四種方式
在「合併」節點的設定視窗中,我們可以依據期望的資料合併方式進行設定,包含:內部加入(Inner Join)、完全外部加入(Full Outer Join)、部分外部加入(Partial Outer Join)以及反加入(Anti-Join)等四種方法。以下我們用簡單的說明與圖示的方式為大家補充這四種合併方法的差異,有關 SPSS Modeler「合併」節點的詳細說明,請參閱官方文件:合併節點。
內部加入(Inner Join):只包含其中索引鍵欄位的值對於所有輸入表格都共有的記錄。即,不符合的記錄不會併入在輸出資料集中。
完全外部加入(Full Outer Join):包含輸入表格中的所有記錄,既有相符的記錄也有不相符的記錄。
部分外部加入(Partial Outer Join):包含使用索引鍵欄位符合的所有記錄,以及指定的表格中的不符合記錄。點擊「選取」按鈕,可以選取要包括在外部結合中的表格。如果只合併兩個表格,局部結合也稱為左外部結合或右側外部結合。
反加入(Anti-Join):僅包含第一個輸入表格(下圖的表 A)的不符合記錄。這種結合類型與內部結合正好相反,在輸出資料集中不包含完整記錄。
3.快速進行資料篩選
在前面的文章中我們介紹過,在「輸出」面板中可以檢視資料輸出的結果(無須重複執行串流),接下來我們將說明如何在「表格」節點的輸出視窗中快速建立資料篩選的節點。
假設我們需要在這個資料集中挑選出 性別(Sex) = 男性(male) 以及 貸款目的(LoanPurpose) = 二手車貸款(car_used) 的資料。首先,我們可以在「表格」節點的輸出視窗中將這二個欄位放置在一起(在欄位名稱點擊按下滑鼠左鍵即可左右移動欄位的位置)。
按下鍵盤的 Ctrl 鍵,然後以滑鼠點擊並複選 Sex = male 與 LoanPurpose = car_used 的儲存格(每個欄位選擇一個即可)。點擊「產生」按鈕,於選單中點擊「選取節點 (「和」)」。
SPSS Modeler 會自動幫我們產生一個「選取」節點,請將 「合併」節點鏈結到「選取」節點。滑鼠雙擊「選取」節點,可以觀察到我們使用點選方式建立的篩選條件已經自動轉換為 SPSS Modeler 表達式 (Expression)。
在「選取」節點後方鏈結一個「表格」節點,執行這個分支串流可以快速看到這個資料篩選的成果。透過這種方式,我們可以很輕鬆地在資料視窗中依據我們期望的條件快速建立資料篩選的節點,這樣的作法會比回到串流畫布中手動加入「選取」節點更快速且更直覺。
4.快速建立衍生欄位
假設我們需要新增一個目標變數欄位將符合 性別(Sex) = 男性(male) 以及 貸款目的(LoanPurpose) = 二手車貸款(car_used) 的資料的資料標記為 Y,其餘資料則標記為 N,接下來就可以透過分類演算法建立一個找出特定顧客族群的二元分類預測模型。再次開啟「表格」節點的輸出視窗,將這二個欄位放置在一起。
按下鍵盤的 Ctrl 鍵,然後以滑鼠點擊並複選 Sex = male 與 LoanPurpose = car_used 的儲存格(每個欄位選擇一個即可)。點擊「產生」按鈕,於選單中點擊「導出節點 (「和」)」。
SPSS Modeler 會自動幫我們產生一個「導出」節點,請將 「合併」節點鏈結到「導出」節點。滑鼠雙擊「導出」節點,可以觀察到我們使用點選方式建立的篩選條件已經自動轉換為 SPSS Modeler 表達式 (Expression)。
在「導出」節點後方鏈結一個「表格」節點,執行這個分支串流可以快速看到這個建立衍生變數的成果。透過這種方式,我們可以很輕鬆地在資料視窗中依據我們期望的條件快速建立衍生變數欄位的節點,這樣的作法會比回到串流畫布中手動加入「導出」節點更快速且更直覺。
版權聲明
文章內容未經授權,請勿進行任何形式的複製、修改或發佈本文內容,如需轉載或引用,請在使用時注明出處並取得授權。本文中提及的特定公司、產品、品牌名稱等僅為描述目的,其版權歸屬於相應的公司或擁有者。
沒有留言:
張貼留言