在本連線學習路徑中,我們將建立一個 Chain,說明如何將 XML 檔案轉換為 CSV。此外,我們將探討如何比較資料集以隔離差異。
| 主要學習目標 | XML Connector |
| 次要學習目標 | 表格轉換智慧篩選器、變更定界符和進階查詢指令 |
| 必要條件 | 設定 XML Connector 連線 |
| 支援範本 | CLP | 存取 XML 資料 |
步驟 1:建立鏈條
- 新增Chains(自動化工作流程) ,並命名為 Chain:CLP | 存取/使用 XML 資料 。
- 建立兩個 Chains(自動化工作流程)變數如下:
- 在Chains(自動化工作流程)下 ,按兩下加號 (+)。
- 為變數使用下列名稱和值:
- 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 格式的類似人數資 訊,然後比較資料集以找出差異。
- 從HTTP Connector 新增GET 指令到 Start 節點。
-
使用下列值組態該命令:
名稱 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 資料集,以找出差異。
- 從HTTP Connector 新增GET 指令到 Chain。
- 將 Start Node (GET - Headcount in CSV Format) 連接到GET Command。
-
使用下列值組態命令:
名稱 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 中需要分隔格式資料的指令。
- 從XML Connector 新增Element List to CSV Command 到 Chain。
- 將GET - Headcount in XML 格式設定 命令連線至Element List to CSV 命令。
- 使用下列值組態命令:
- 對於輸入檔案 參數,選取GET - Headcount in XML Format 命令中的回應輸出 。
- 將輸入 文字參數留空。
- 對於Path to root 參數,輸入下列封套資訊:
/employee_data/employee - 記號預覽結果 參數核取方塊。
-
對於資料欄 區段 (UI)/章節,按一下新增 按鈕 12 次。
對於新增的每一列,在欄位名稱 和XPath 欄位中輸入上一步/上一個預覽資料記錄中的欄位名稱。
範例:emp_id⚠️ XPath 欄位區分大小寫,且必須符合封套的大小寫。
- 對於多值分隔符參數,輸入一個煙斗 (|) 。
- 儲存指令。
- 發佈、執行並執行連結。
-
檢閱Element List to CSV - All Employees 指令節點的Log 索引標籤,並確認已顯示員工清單。
⚠️ 請勿跳過此步驟的執行和結果檢閱,因為會在連鎖中建立此指令的複本,且隨後需要在多個指令實例中修正任何錯誤。
步驟 5:將轉換後的 XML 從 Tab-delimited 改為 Comma-delimited
使用 Tabular Transformation Connector 將 XML 轉換產生的輸出從制表符分隔格式轉換為逗號分隔格式。
- 從Tabular Transformation Connector 新增Change Delimiter Command 到 Chain。
- 將Element List to CSV - All Employees 指令連接至Change Delimiter 指令。
- 使用下列值組態命令:
- 名稱: 變更分隔符 - 所有員工
- 輸入檔案: 轉換/兌換檔案輸出 從元素清單轉換為 CSV - 所有員工 命令
- 輸入分隔符: \t
- 輸出定界符:, (逗號)
- 儲存指令。
步驟 6:比較 CSV 和 XML 資料集以找出差異
使用進階查詢 系統地識別 XML 與本機 CSV 資料設定之間的差異。在此範例中,請識別 XML 資料集中與 CSV 資料集中不同或遺漏的任何記錄。在 CSV 資料集中找到的任何其他記錄,如果不在 XML 資料集中,則不會透過此練習進行識別。
- 從Tabular Transformation Connector 新增Advanced Query Command 到 Chain。
- 連接Change Delimiter - All Employees 指令至Advanced Query 指令。
- 命名命令名稱:進階查詢 - 所有員工 。
- 在表格 部分中,单击添加 按钮添加第二个选项卡。
- 對於第一個表:
- 從變更定界符 - 所有員工 命令指定CSV 結果 輸出。
- 指定XML 為表名稱 。
- 對於第二個表:
- 從GET - Headcount in CSV Format 指令指定回應輸出 。
指定CSV 為表格名稱 。 - 在查詢參數中,輸入以下內容:
Select * from XML EXCEPT Select * from CSV - 在輸入 分隔符和輸出 分隔符欄位中,指定逗號 。
- 勾選預覽結果 選項。
- 從GET - Headcount in CSV Format 指令指定回應輸出 。
- 對於第一個表:
- 儲存指令。
- 發佈、執行並執行連結。
-
檢視Advanced Query - All Employees 指令節點的Log 索引標籤,並確認查詢所傳回記錄的員工 ID 與下列資訊相符。
員工 ID 01-6875791 10-4199621 38-3932553 63-0417180 78-3600453 85-6818050 97-2828467
步驟 7:新增指令群組
在 Chain 中添加命令組,以便更好地組織命令。雖然本練習需要此步驟,但這並非 Chain 的技術要求。此步驟僅用來說明組織 Chain 節點的能力。
- 新增指令群組 到 Chain。
- 將GET - Headcount in XML 格式指令連接至指令群組的 In 區段。
- 按一下指令群組,然後選擇下拉式圖示,將指令顏色變更為紅色 。
- 命名組:Active Employees 。
步驟 8:僅篩選活躍員工的 CSV 資料
使用智能篩選器,僅保留員工在職的員工記錄。定義篩選器時,我們假設已終止 (termed) 欄位為空白表示員工在職。
- 從Tabular Transformation Connector 新增Smart Filter Rows Command 到 Chain。
- 從命令群組連接群組開始 到智慧篩選器 命令。
- 使用下列值組態命令:
- 命名命令名稱:Smart Filter Rows - CSV Data - Active Employees 。
- 針對輸入檔案 參數,從GET - Headcount in CSV Format 指令選取回應輸出 。
- 將Output 檔案參數留空。
- 指定逗號 為分隔符 。
- 在篩選條件 區段 (UI)/章節中,完成下列級距步驟:
- 按一下文字 篩選器上的新增 按鈕。
- 在欄名稱 參數中,輸入稱為 。
- 勾選大小寫不區分 選項。
- 從Condition 下拉選項中,選擇Equals 。
- 在Compare Text 參數中,輸入true 。
- 勾選Not 選項。
- 不勾選Trim 核取方塊。
現在,此篩選條件將識別字段 "termed 「不包含true (即包含 」false "或空白)值的任何記錄。
- 保留預覽結果 選項的記號。
-
Inverse 選項允許 Smart Filter 保留(勾選)或移除(未勾選)所有符合篩選準則的資料列。在這個練習中,我們要保留「termed」字詞欄值為「true」或空白的所有行。
為此,請記號(勾選)反向 核取方塊。 - 儲存指令。
步驟 8:僅篩選活躍員工的 CSV 資料
使用智能篩選器,僅保留員工在職的員工記錄。在定義篩選條件時,我們假設 terminated ("termed") 欄位為空白表示員工已啟用/啟動。
- 從Tabular Transformation Connector 新增Smart Filter Rows Command 到 Chain。
- 從命令群組連接群組開始 到智慧篩選器 命令。
- 使用下列值組態命令:
- 命名命令名稱:Smart Filter Rows - CSV Data - Active Employees 。
- 對於輸入檔案 ,從GET - Headcount in CSV 格式設定命令中選取回應輸出 。
- 將Output 檔案參數留空。
- 指定逗號 為分隔符 。
- 在篩選器 區段、
- 按一下文字 篩選器上的新增 按鈕。
- 在欄名稱 參數中,輸入稱為 。
- 勾選大小寫不區分 選項。
- 從Condition 下拉選項中,選擇Equals 。
- 在Compare Text 參數中,輸入true 。
- 勾選Not 選項。
- 不勾選Trim 核取方塊。
現在,此篩選條件將識別任何欄位「termed」不包含true 值(即包含「false」或空白)的記錄。
- 將預覽結果 核取方塊保留為標記號(已勾選)。
- Inverse選項允許 Smart Filter 保留(勾選)或移除(未勾選)符合篩選準則的所有行。在這個練習中,我們要保留 termed 欄位值為 true 或空白的所有行。若要達成此目的,請標記 (勾選)反向 核取方塊。
- 儲存指令。
步驟 9:轉換為 Delimited 時過濾 XML 資料
在這個步驟中,我們會篩選 XML 資料,同時轉換成僅識別在職員工的分隔格式。此資料集隨後將與篩選過的 CSV 資料集比較,以找出差異。
- 複製元素清單至 CSV - 所有員工 命令。
- 將群組 Start 從命令群組連接到Element List to CSV - All Employees (Copy) 命令。
- 編輯命令,將其命名:元素清單至 CSV - 啟用/啟動員工 。
- 在 "Path to root "參數中輸入以下內容。
/employee_data/employee[termed!='true']
這將識別字段 "termed 「不包含true 值(即包含 」false "或空白)的任何記錄。 - 儲存指令。
步驟 10:將篩選的 XML 資料轉換為逗號分隔型
與完整員工名冊一樣,已從 XML 轉換為以制表符分隔的篩選在職員工名冊需要轉換為以逗號分隔。
- 複製變更分隔符 - 所有員工 指令。
- 將Element List to CSV - Active Employees 指令連接至Element Change Delimiter - All Employees (Copy) 指令。
- 使用下列值組態命令。
- 名稱:變更分隔符 - 在職員工。
- 修改輸入檔案 參數,以使用轉換檔案 從元素清單輸出至 CSV - 在職員工 指令。
- 儲存指令。
步驟 11:檢查與在職員工的差異
與完整員工名冊一樣,已從 XML 轉換為以制表符分隔的篩選在職員工名冊需要轉換為以逗號分隔。
- 複製Advanced Query - All Employees 指令。
- 將命令群組的Out 連接到Advanced Query - All Employees (Copy) 命令。將 Advanced Query - All Employees 指令連接到 Group Out,可確保所有連接到 Group Start 的指令在連續到 Group Out 的指令之前完成。
- 使用下列值組態命令:
- 名稱: 進階查詢 - 在職員工。
-
在表格 區段 (UI)/章節中,使用下列值為兩個表格修改檔案 參數:
表格 檔案 XML 變更定界符 - 在職員工指令的 CSV 結果輸出 CSV 智能篩選列輸出 來自智能篩選列 - 僅作用中,CSV 資料指令
- 儲存指令。
步驟 12:測試練習
現在 Chain 已經完成,請測試結果。
- 發表鏈結。
- 按一下執行 ,然後選擇執行 Chain 。
- 當 Chains(自動化工作流程)執行完畢後,請按一下Advanced Query - Active Employees 節點。
- 在Outputs 索引標籤上,確認已輸出 4 條記錄。
-
按一下記錄索引標籤,並確認查詢所傳回記錄的員工 ID 與下列相符。
員工 ID 01-6875791 63-0417180 78-3600453 85-6818050
若要進一步了解使用 Chains(自動化工作流程)進行資料轉換的更多資訊,請查閱Connected Learning Paths - Transformation Introduction !