在此連線學習路徑中,我們將建立一個 Chain,說明如何將具有巢狀物件的 JSON 資料集轉換為 CSV。此外,我們將探討如何使用 cartesian join 來使此嵌套結構更平整。
| 主要學習目標 | JSON Connector 支援巢狀 JSON 物件的能力 |
| 次要學習目標 | 表格轉換進階查詢指令 |
| 必要條件 | 配置 JSON 連接器連線 配置 HTTP 連接器連線 |
| 支援範本 | CLP | 存取 JSON 嵌套物件 |
步驟 1:建立鏈條
- 新增鏈條 。
- 命名 Chains(自動化工作流程):CLP | 存取/使用 JSON 巢狀 (的).
- 建立一個 Chains(自動化工作流程)變數,並使用下列值填充它:
- 名稱: cv-JSON-Donut
- 值: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/donut.json
- 保存 鏈條。
步驟 2:擷取 JSON 資料
使用 HTTP Connector 從網路位置擷取 JSON 格式的人數相關資料。
- 從HTTP Connector 新增GET 指令到 Start 節點。
- 使用下列值組態該命令:
名稱 GET - JSON 資料 使用者名稱 <leave blank> 密碼 <leave blank> CA 憑證 <leave blank> 憑證 <leave blank> 憑證私密金鑰 <leave blank> 顯示回應 已核取 URL cv-JSON-Donut 連鎖變數 查詢字串 <leave blank> 內容類型 應用程式/json 回覆
<leave blank> - 儲存指令。
步驟 3:取得未嵌套的 JSON 資料
此鏈結使用 JSON 連接器中的Object to CSV 命令,從 JSON 物件中提取名稱和類型別式的資料鍵/金鑰,這些資料鍵/金鑰不是巢狀 (的)。
附註: 了解 JSON 資料集的結構描述非常重要。您可以使用File Utilities Connector 中的List File Content Command 來顯示模式。以下是 "donut" JSON 的結構描述,以供參考 (資料):
結構描述
{"ID": "0001", "type": "donut", "name": "Cake", "ppu":0.55, "batters":{"batter":[{"id":"1001","type":"Regular"},{"id":"1002","type":"Chocolate"}, {"id":"1003","type":"Blueberry"},{"id":"1004","type":"Devil's Food"}]}, "topping":[{"id":"5001","type":"None"},{"id":"5002", 「類型」: 「糖漿」},{"ID": "5005", 「類型」: 「糖」},{"ID": "5007", 「類型」: 「糖粉」},{"ID": "5006", 「類型」: 「巧克力灑花」},{"ID": "5003", 「類型」: 「巧克力」},{"ID": "5004", 「類型」: 「楓葉」}]} - 從JSON Connector 新增Object to CSV Command 到 Chain。
- 將 Start Node (GET - JSON Data) 連線至Object to CSV Command。
- 開啟命令,並使用下列值進行組態。
- 命名命令名稱:物件轉 CSV - 名稱與型別式 。
- 對於JSON Data 參數,請選取GET - JSON Data 命令的回應 輸出。
- 將Input Text 和Path to root 參數留空。
- 將多值分隔符 參數留為逗號 (, )。
- 記號預覽結果 核取方塊。
- 為Delimiter 參數選擇Pipe 。
Columns 區段用於指定 JSON 物件中的哪些元素將被提取到列式 (CSV) 資料集。 - 按一次Add 按鈕,新增兩列。
- 對於第一列,為欄名稱 輸入名稱 ,並為 JSONPath 參數輸入.name 。
- 對於第二列,輸入鍵入Column Type 和.type 作為 JSONPath 參數。
- 儲存指令。
步驟 4:取得餡料清單
使用 JSON Connector 的 Array to CSV 命令取得巢狀 (的) JSON 陣列中的 topings 清單。
- 從 JSON 連接器新增一個Array to CSV Command 到 Chains(自動化工作流程)。
- 連接GET - JSON 資料 命令至Array to CSV 命令。
- 使用下列值組態命令:
- 命名該命令:將命令命名為:Array to CSV - Toppings 。
- 對於JSON Data 參數,請選取GET - JSON Data 命令的Response 輸出。
- 將輸入文字 參數留空。
- 對於Path to root 參數,輸入topping (小寫),然後按 Enter。Topping 應該會在灰色氣泡中出現,並在其前面加上等號。
- 將Filter 參數留空。
- 多值分隔符 參數保留預設值逗號 (,) 。
- 記號預覽結果 核取方塊。
- 在Columns 區段 (UI)/章節中,我們指定 JSON 陣列中的資料鍵/金鑰,以提取值到結果 CSV 中的一列。
- 對於第一個資料欄名稱 參數,輸入ToppingID ,並在JSONPath 參數中輸入.id 。
- 對於第二個資料欄名稱 參數,輸入ToppingType ,並在JSONPath 參數中輸入.type 。
- 對於Delimiter 參數,選取Pipe 。
- 儲存指令。
步驟 5:取得打者清單
此鏈結使用 JSON 連接器中的Array to CSV 命令來取得巢狀 JSON 陣列中的面糊清單。由於每個陣列的巢狀 (的) 不同,我們將使用兩個Array to CSV 命令來抽取麵糰和餡料。
使用Object to CSV 命令與巢狀 JSONPaths (的) (例如,.topping[*].type) 建立多部分值,在 CSV 資料集中較難使用。
- 從JSON 連接器 新增Array to CSV Command 到 Chains(自動化工作流程)。
- 連接GET - JSON 資料 命令至Array to CSV 命令。
- 使用下列值組態命令:
- 命名命令:Array to CSV - Batters 。
- 對於JSON 資料 參數,請選取GET - JSON 資料 命令的回應 輸出。
- 將輸入文字 參數留空。
- 對於Path to root 參數,鍵入batters (全部小寫),然後按 Enter。然後鍵入batter (全部小寫) 並按 Enter。
Batters 和batter 應該依序出現在兩個灰色氣泡中。 - 將Filter 參數留空。
- Multi-value Delimiter 參數保留預設值逗號 (,) 。
- 勾選預覽結果 選項。
- 在 「欄 」區段 (UI)/「章節 」中,我們指定 JSON 陣列中的資料鍵/金鑰,以提取值到結果 CSV 中的一列。
- 對於資料欄名稱 參數,輸入BatterID ,並在JSONPath 參數中輸入.id 。
- 對於資料欄名稱 參數,輸入BatterType ,並在JSONPath 參數中輸入.鍵入.
- 對於Delimiter 參數,選取Pipe 。
- 儲存指令。
步驟 6:壓縮資料
我們將在 Tabular Transformation Connector 的Advanced Query Command 中使用「Cartesian join」來平整資料集。笛卡兒聯結會建立我們使用Object to CSV 和Array to CSV 命令所抽取元素的所有可能組合。
- 從Tabular Transformation Connector 加入Advanced Query Command 到 Chain。
- 連線每個物件到 CSV - 名稱與類型,陣列到 CSV - Batters, 和陣列到 CSV - Toppings 命令到進階查詢 命令。
- 使用下列值組態命令:
- 命名命令:進階查詢 - 將 JSON 物件扁平化 。
- 在表格 區段中,按兩次新增 按鈕,以便有三個可用的表格。
使用下列值完成表格:檔案 表格名稱 從Object to CSV - Name & Type 命令選取轉換/兌換檔案輸出。 名稱 從Array to CSV - Batters 命令選取轉換/兌換的檔案輸出。 擊球 選取Array to CSV - Toppings 命令的轉換/兌換檔案輸出。 回頂 - 對於查詢 參數,輸入如下內容:
Select Type as dessert_type,Name as variety,BatterType,ToppingType from Name,Batter,Topping - 對於輸入定界符 和輸出定界符 參數,指定Pipe 。
- 記號預覽結果 核取方塊。
- 儲存指令。
步驟 7:測試鏈結並審閱結果 AAA
- 發表鏈結。
- 按一下執行 ,然後選取執行 Chains(自動化工作流程) 。
- 一旦完成 Chain、
- 按一下Advanced Query - Flatten JSON Object 節點,並選擇Outputs 索引標籤。
- 確認Record Count 是28 。
- 選取Logs 索引標籤,並確認資料預覽與下列螢幕擷取畫面相符。
若要進一步了解使用 Chains(自動化工作流程)進行資料轉換的詳細資訊,請參閱Connected Learning Paths - Transformation Introduction 。