在本連線學習路徑中,我們將建立一個 Chain,說明如何將 XML 檔案轉換為 CSV。此外,我們將探討如何比較資料集以隔離差異。
| 主要學習目標 | XML Connector |
| 次要學習目標 | 表格轉換智慧篩選器、變更定界符和進階查詢指令 |
| 必要條件 | 設定 XML Connector 連線 |
| 支援範本 | CLP | 存取 XML 資料 |
步驟 1:建立鏈條
- 新增一個 鏈結,並將鏈結命名為: CLP |正在存取 XML 資料。
- 建立兩個 Chains(自動化工作流程)變數如下:
- 在 「鏈結變數」(Chain Variables)下,按一下加號 (+) 兩次。
- 為變數使用下列名稱和值:
- XML 變數
- 名稱: CV-XML-Employee
- 值: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/employees.xml
- CSV 變數
- 名稱: CV-CSV-Employee
- 值: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/employee_detail.csv
- XML 變數
- 保存 鏈條。
步驟 2:擷取 CSV 格式的資料
使用 HTTP Connector 以 CSV 格式擷取人數相關資料。在稍後步驟中,我們將擷取 XML 格式的類似人數資 訊,然後比較資料集以找出差異。
- 將 GET 命令從 HTTP 連接器 新增至「開始」節點。
-
使用下列值組態命令:
姓名 GET - CSV 格式的人數點算 使用者名稱 <leave blank> 密碼 <leave blank> CA 憑證 <leave blank> 認證 <leave blank> 憑證私密金鑰 <leave blank> 顯示回應 已核取 URL CV-CSV-Employee 鏈結變數 查詢字串 <leave blank> 內容類型 text/csv 回覆 <leave blank> - 儲存指令。
步驟 3:以 XML 格式擷取資料
使用 HTTP Connector 以 XML 格式檢索人數相關資料。如步驟 2 所述,在隨後的步驟中,我們將比較 XML 資料集和 CSV 資料集,以找出差異。
- 將 GET 命令從 HTTP 連接器 新增至鏈結。
- 將起始節點 (GET - Headcount in CSV 格式) 連結至 GET 命令。
-
使用下列值組態命令:
姓名 GET - 以 XML 格式顯示人數 使用者名稱 <leave blank> 密碼 <leave blank> CA 憑證 <leave blank> 認證 <leave blank> 憑證私密金鑰 <leave blank> 顯示回應 已核取 URL CV-XML-Employee 鏈結變數 查詢字串 <leave blank> 內容類型 應用程式/xml 回覆 <leave blank> - 儲存指令。
步驟 4:將 XML 檔案轉換為分隔格式
使用 XML Connector 將 XML 資料轉換為 CSV 格式,讓我們可以利用 Chain 中需要分隔格式資料的指令。
- 將 元素清單新增至 CSV 命令從 XML 連接器 至鏈結。
- 將 GET - Headcount in XML 格式 命令連結至 Element List to CSV 命令。
- 使用下列值組態命令:
- 對於 「輸入檔案」(Input File) 參數,請從 「GET - Headcount in XML Format 」命令中選取「 回應輸出」(Response Output) 。
- 將 輸入 文字參數保留空白。
- 對於 Path to root 參數,請輸入以下信封資訊:
/employee_data/mployee - 勾選 「預覽結果」 參數核取方塊。
-
針對 「欄」 區段,按一下 「新增」 按鈕 12 次。
對於每個新增的資料欄,請在 「資料欄名稱」 和 「XPath」 欄位輸入上一步中預覽的資料記錄中的欄位名稱。範例
: emp_id⚠️ XPath 欄位區分大小寫,且必須符合封套的大小寫。
- 對於多值分隔符參數,輸入一個煙斗 (|) 。
- 儲存指令。
- 發佈、執行並執行連結。
-
審閱 元素清單至 CSV - 所有員工 命令節點的 日誌 分頁,並確認顯示員工清單。
⚠️ 請勿跳過此步驟的執行和結果檢閱,因為會在連鎖中建立此指令的複本,且隨後需要在多個指令實例中修正任何錯誤。
步驟 5:將轉換後的 XML 從 Tab-delimited 改為 Comma-delimited
使用 Tabular Transformation Connector 將 XML 轉換產生的輸出從制表符分隔格式轉換為逗號分隔格式。
- 將 變更分隔符號 命令從 表格轉換 連接器新增至鏈結。
- 將 元素清單連接到 CSV - 所有員工 命令到 變更分隔符號 命令。
- 使用下列值組態命令:
- 名稱: 變更分隔符號 - 所有員工
- 輸入檔案: 已從元素清單中 的檔案輸出轉換 為 CSV - 所有員工 命令
- 輸入分隔符號: \t
- 輸出分隔符號:, (逗號)
- 儲存指令。
步驟 6:比較 CSV 和 XML 資料集以找出差異
使用 進階查詢 系統地識別 XML 和原生 CSV 資料集之間的差異。在此範例中,請識別 XML 資料集中與 CSV 資料集中不同或遺漏的任何記錄。在 CSV 資料集中找到的任何其他記錄,如果不在 XML 資料集中,則不會透過此練習進行識別。
- 將 進階查詢 命令從 表格轉換 連接器 新增至鏈結。
- 將 Change Delimiter - AllEmployees 命令連接到 進階查詢 命令。
- 將此命令命名為: 進階查詢 - 所有員工。
- 在 Tables 區段中,按一下 Add 按鈕以新增第二個索引標籤。
- 對於第一個表:
- 從 Change Delimiter - AllEmployees 命令指定 CSV 結果 輸出。
- 將 XML 指定為 表格名稱。
- 對於第二個表:
-
指定 「GET - Headcount in CSV Format」 命令的 回應輸出 。
將 CSV 指定為 表格名稱。 - 在 Query 參數中,輸入以下內容:
Select * from XML EXCEPT Select * from CSV - 在 Input Delimiter 和 Output Delimiter 欄位中,指定 逗號。
- 勾選 「預覽結果」 選項。
-
指定 「GET - Headcount in CSV Format」 命令的 回應輸出 。
- 對於第一個表:
- 儲存指令。
- 發布、執行和執行鏈結。
-
審閱 進階查詢 - 所有員工命令的 「記錄」索引 標籤,並確認查詢傳回的記錄的員工編號與以下內容相符。
員工 ID 01-6875791 10-4199621 38-3932553 63-0417180 78-3600453 85-6818050 97-2828467
步驟 7:新增指令群組
在 Chain 中添加命令組,以便更好地組織命令。雖然本練習需要此步驟,但這並非 Chain 的技術要求。此步驟僅用來說明組織 Chain 節點的能力。
- 將 命令群組 新增至鏈結。
- 將 GET - Headcount in XML 格式命令連結至命令群組的「輸入」區段。
- 按一下命令群組,然後選取滴管圖示,將命令顏色變更為 紅色。
- 將此群組命名為: 在職員工。
步驟 8:僅篩選活躍員工的 CSV 資料
使用智能篩選器,僅保留員工在職的員工記錄。定義篩選器時,我們假設已終止 (termed) 欄位為空白表示員工在職。
- 將 表格轉換連接器 中的 智慧篩選列 命令新增至鏈結。
- 將命令群組 的群組開始 連結至 智慧篩選 命令。
- 使用下列值組態命令:
- 將此命令命名為: Smart Filter Rows - CSV Data - ActiveEmployees。
- 對於 輸入檔案 參數,請從 GET - Headcount in CSV Format 命令中選取回應輸出 。
- 將 輸出 檔案參數保留空白。
- 將 逗號 指定為 分隔符號。
- 在 「篩選器」 區段中,完成以下步驟:
- 按一下 Text 篩選器上的 Add 按鈕。
- 在 「資料欄名稱」 參數中,輸入 「termed」。
- 勾選 不區分大小寫 選項。
- 從 Condition 下拉式選單中,選取 Equals。
- 在 「比較文字」 參數中,輸入 true。
- 勾選「 不是」 選項。
- 取消核取 Trim 核取方塊。
此篩選器現在將識別「termed」欄位不包含 true 值(即包含「false」或為空白)的任何記錄。
- 保留標示 「預覽結果」(Preview Result) 選項的狀態。
- 反向 選項可讓智慧篩選器保留 (勾選) 或移除 (取消勾選) 符合篩選條件的所有資料列。在這個練習中,我們要保留「termed」字詞欄值為「true」或空白的所有行。若要
實現此目的,請勾選(勾選) Inverse 核取方塊。 - 儲存指令。
步驟 8:僅篩選活躍員工的 CSV 資料
使用智能篩選器,僅保留員工在職的員工記錄。在定義篩選條件時,我們假設 terminated ("termed") 欄位為空白表示員工已啟用/啟動。
- 將 表格轉換連接器 中的 智慧篩選列 命令新增至鏈結。
- 將命令群組 的群組開始 連結至 智慧篩選 命令。
- 使用下列值組態命令:
- 將此命令命名為: Smart Filter Rows - CSV Data - ActiveEmployees。
- 對於 「輸入檔案」(Input file),請從 「GET - Headcount in CSV Format」命令中選取「回應輸出」(Response Output) 。
- 將 輸出 檔案參數保留空白。
- 將 逗號 指定為 分隔符號。
- 在 「篩選條件」(Filters) 區段中,
- 按一下 Text 篩選器上的 Add 按鈕。
- 在 「資料欄名稱」 參數中,輸入 「termed」。
- 勾選 不區分大小寫 選項。
- 從 Condition 下拉式選單中,選取 Equals。
- 在 「比較文字」 參數中,輸入 true。
- 勾選「 不是」 選項。
- 取消核取 Trim 核取方塊。
此篩選器現在將識別「termed」欄位不包含 true 值(即包含「false」或為空白)的任何記錄。
- 保留勾選 (勾選) Preview Result 核取方塊。
- 反向 選項可讓智慧篩選器保留 (勾選) 或移除 (取消勾選) 符合篩選條件的所有資料列。在這個練習中,我們要保留 termed 欄位值為 true 或空白的所有行。若要實現此目的,請標記 (勾選) Inverse 核取方塊。
- 儲存指令。
步驟 9:轉換為 Delimited 時過濾 XML 資料
在這個步驟中,我們會篩選 XML 資料,同時轉換成僅識別在職員工的分隔格式。此資料集隨後將與篩選過的 CSV 資料集比較,以找出差異。
- 將 元素清單複製到 CSV - 所有員工 命令。
- 將「命令群組」的 「群組開始」(Group Start) 連接到 「元素清單」(Element List) 至「CSV - AllEmployees (Copy) Command」。
- 編輯命令,將其命名為: Element List to CSV - ActiveEmployees。
- 在「Path to root」參數中,輸入以下內容。
/employee_data/employee[termed!='true']
現在,這將識別「termed」欄位不包含 true 值(即,它包含「false」或為空白)的任何記錄。 - 儲存指令。
步驟 10:將篩選的 XML 資料轉換為逗號分隔型
與完整員工名冊一樣,已從 XML 轉換為以制表符分隔的篩選在職員工名冊需要轉換為以逗號分隔。
- 複製 Change Delimiter - AllEmployees 命令。
- 將 元素清單連接至 CSV - ActiveEmployees 命令至 元素變更分隔符 - 所有員工(複製) 命令。
- 使用下列值組態命令。
- 名稱:變更分隔符號 - 在職員工。
- 修改 輸入檔案 參數以使用從元素清單 轉換的檔案 輸出 為 CSV - 在職員工 命令。
- 儲存指令。
步驟 11:檢查與在職員工的差異
與完整員工名冊一樣,已從 XML 轉換為以制表符分隔的篩選在職員工名冊需要轉換為以逗號分隔。
- 複製 進階查詢 - 所有員工 命令。
- 將命令群組 外 的使用者連接到 進階查詢 - 所有員工(複製) 命令。將 Advanced Query - All Employees 指令連接到 Group Out,可確保所有連接到 Group Start 的指令在連續到 Group Out 的指令之前完成。
- 使用下列值組態命令:
- 名稱: 進階查詢 - 在職員工。
-
在 「表格」 區段中,使用以下值修改這兩個表格的 「檔案」 參數:
表格 檔案 XML 變更分隔符號的CSV 結果輸出 - 在職員工命令 CSV 智慧篩選列的智慧篩選列輸出 - 僅作用中,CSV 資料命令
- 儲存指令。
步驟 12:測試練習
現在 Chain 已經完成,請測試結果。
- 發布 鏈結。
- 按一下 「執行」(Execute) ,然後選取 「執行鏈結」(Run Chain)。
- 鏈結完成執行後,按一下 Advanced Query - ActiveEmployees 節點。
- 在 「輸出」(Outputs) 索引 標籤上,確認已輸出 4 條記錄。
-
按一下記錄索引標籤,並確認查詢所傳回記錄的員工 ID 與下列相符。
員工 ID 01-6875791 63-0417180 78-3600453 85-6818050
如要進一步了解使用鏈結進行資料轉換,請參閱互聯學習路徑 - 轉換簡介!