在本关联学习路径中,我们将创建一个链,演示如何将 JSON 数据集转换为 CSV。在这个示例数据集中,有一个嵌套对象数组。
此路径强化了我们在 JSON 数据练习中学到的循环概念,以及在 JSON 嵌套对象路径中学到的笛卡尔连接概念。如果您尚未完成这些路径,我们强烈建议您在完成此路径之前完成它们。
| 主要学习目标 | JSON 连接器功能 |
| 次要学习目标 | 表格转换高级查询命令、迭代和变量转换的强大功能 |
| 先决条件 | |
| 支持链模板 | CLP | 访问嵌套对象的 JSON 数组 |
步骤 1:创建链
- 添加新链
- 命名链: CLP | 访问嵌套对象的 JSON 数组
- 创建链式变量
- 名称: cv-JSON-AllDonut
- 值: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/all_donuts.json
- 拯救链条
步骤 2:检索 JSON 数据
使用 HTTP 连接器从 Web 位置检索甜甜圈数据。该数据集展示了一个更复杂的 JSON 数据集示例,其中包含一个嵌套对象(属性)的数组(多个项目)。
- 从 HTTP 连接器向启动节点添加 GET 命令。
- 使用以下方式配置命令:
| 姓名 | 获取 - 所有甜点 |
| 用户名 | <leave blank> |
| 密码 | <leave blank> |
| CA证书 | <leave blank> |
| 证书 | <leave blank> |
| 证书私钥 | <leave blank> |
| 显示回复 | 已核取 |
| 网址 | cv-JSON-AllDonut 链式变量 |
| 查询字符串 | <leave blank> |
| 内容类型 | application/json |
| 回复 | <leave blank> |
- 保存命令
步骤 3:将 JSON 转换为 CSV
使用 JSON 连接器从 JSON 数组中提取键,以识别不同的甜甜圈品种。
供参考,以下是所有甜甜圈 JSON 的架构:
结构描述
[{"id":"0001","type":"甜甜圈","name":"蛋糕","ppu":0.55,"batters":{"batter":[{"id":"1001","type":"常规"},{"id":"1002","type":"巧克力"},{"id":"1003","type":"蓝莓"},{"id":"1004","type":"魔鬼蛋糕"}]},"topping":[{"id":"5001","type":"无"},{"id":"5002","type":"糖霜"},{"id":"5005","type":"糖"},{"id":"5007","type":"糖粉"},{"id":"5006","type":"巧克力配糖粉"}糖霜”},{"id":"5003","type":"巧克力"},{"id":"5004","type":"枫糖"}]},{"id":"0002","type":"甜甜圈","name":"凸起","ppu":0.55,"batters":{"batter":[{"id":"1001","type":"常规"}]},"topping":[{"id":"5001","type":"无"},{"id":"5002","type":"糖霜"},{"id":"5005","type":"糖"},{"id":"5003","type":"巧克力"},{"id":"5004","type":"枫糖"}]},{"id":"0003","type":"甜甜圈","name":"老式甜甜圈"时尚”,"ppu","batters","batter","[{"id":"1001","type":"常规"},{"id":"1002","type":"巧克力"}]},"topping","[{"id":"5001","type":"无"},{"id":"5002","type":"糖霜"},{"id":"5003","type":"巧克力"},{"id":"5004","type":"枫糖"}]}]
- 将 数组添加到 CSV 命令,从 JSON 连接器 添加到链中。
- 将起始节点(GET - 所有甜点)连接到 数组到 CSV 命令。
- 命令名称: 数组到 CSV - 获取种类。
- 在 JSON 数据 参数中,选择 GET - 所有甜点 命令的 响应 输出。
- 将 输入文本、 根路径和 过滤器 参数留空。
- 将 多值分隔符 参数保留为逗号 (,)。
- 勾选 预览结果 选项。
- 输入 variety 作为 列名 ,并输入 .name 作为 JSONPath 参数。
- 选择 管道 作为 分隔符 参数。
- 保存命令
步骤 4:创建可迭代数据集
如前所述,该数据集包含一个嵌套对象的数组(即多个项目)。要分别处理每个品种,必须向数据集中添加行号。这些行号将在后续的数组到 CSV 命令中使用,以标识要解析嵌套对象(属性)的数组项(圆环)。
对于熟悉 Chain Builder 的用户来说,您可能会好奇为什么我们使用高级查询而不是添加行号命令。添加行号命令从 1 开始计数,但我们需要从零 0 开始计数,因为 JSON 数组是从零开始计数的。
- 将 高级查询 命令从 表格转换 连接器 添加到链中。
- 将 数组连接到 CSV - 获取种类 命令到 高级查询 命令。
- 命令名称: 高级查询 - 添加行号。
- 配置表格部分
- 在 文件 字段中,指定 转换文件 从 数组到 CSV 的输出 - 获取种类 命令。
- 在 表名称参数中输入 [] 种 。将对该表执行指定的查询。
- 在“查询”参数中,输入以下内容:
SELECTBY variety
ROW_NUMBER () OVER
( ORDER
)
- 1 RowNum
, variety FROM
variety
- 分别指定 管道符 和 逗号 作为 输入分隔符 和 输出分隔符 参数。
- 检查 预览结果 参数。
- 保存命令。
步骤 5:创建 JSON 数组
使用 JSON 连接器中的 CSV 转 JSON 命令将唯一的品种列表转换为 JSON 数组。命令组可以遍历此数组中的每个元素。
- 将 CSV 转 JSON 命令从 JSON 连接器 添加到链中。
- 将 高级查询 - 添加行号 命令连接到 CSV 转 JSON 命令。
- 使用以下命令配置命令:
| 姓名 | CSV 转 JSON - 多种类型 |
| 输入文件 | 结果高级查询的输出 - 添加行号 命令 |
| 分隔符号 | 逗号 (,) |
- 保存命令
步骤 6:添加命令组
向链中添加命令组,以便对高级查询步骤中确定的每个甜甜圈品种进行迭代。
- 向链中添加一个 命令组 。
- 将 CSV 转 JSON - Varieties 命令连接到 In 命令组的 [] 部分。
- 单击命令组,然后选择吸管图标,将命令颜色更改为 黄色。
- 命名组: 甜甜圈品种。
- 启用 迭代 开关,并从 CSV 转 JSON - Varieties 命令中选择 JSON 文件 输出。
- 保存命令组。
步骤 7:获取配料清单
使用 JSON 连接器的数组到 CSV 命令获取嵌套 JSON 数组中的配料列表。对每种甜甜圈都重复此操作。
⚠ 请特别注意以下步骤中用红色感叹号标出的警告说明。
- 将 数组添加到 CSV 命令,从 JSON 连接器 添加到链中。
- 将 组开始 从 甜甜圈品种 命令组连接到 数组到 CSV 命令。
- 命令名称: 数组到 CSV - 配料。
- 在 JSON 数据 参数中,选择 GET - 所有甜点 命令的 响应 输出。
- 将 输入文本 参数留空。
- 在 根路径 参数中,我们将利用迭代值来指定迭代将要操作的数组项。
- 以下步骤 至关重要 ,在完成此
- 单击 根路径 参数。从“变量选择”窗格中,展开 组迭代器 ,然后单击 JSON 文件迭代。
- 单击“根路径”参数中的绿色 JSON 文件迭代 气泡。这将打开变量转换表单。选择 从 JSON 获取值 并单击加号 (+)。在 值 字段中输入 [] 行号 (区分大小写),然后按 Enter 键。点击 接受。
- 变量上应带有星号,表示已应用变量转换。
- 🛑 如果上述任何步骤失败,请从根路径中删除 JSON 文件迭代变量,然后重新开始。
- 在 列名 参数中,输入 顶部 ,在 JSONPath 参数中,输入 .type。
步骤 8:获取击球手名单
使用 JSON 连接器的 Array to CSV 命令获取嵌套 JSON 数组中的击球手列表。对每种甜甜圈都重复此操作。由于此步骤与上一步非常相似,因此复制上一步配置的命令,并只需更新击球手信息即可。
- 将 数组复制到 CSV - 配料 命令。
- 将 组开始 从 甜甜圈品种 命令组连接到 数组到 CSV - 配料(复制) 命令。
- 将复制的命令命名为: 数组到 CSV - 击球手。
- 在 根路径 参数中,单击 X 删除顶部气泡。输入 面糊 (区分大小写)并按 Enter 键。然后输入 batter 并按回车键。“路径到根”参数中应该有三个方括号 。
- JSON 文件迭代 *
- 面糊s
- 连击
- 在“列”部分,将列名称从 topping 更改为 batter。
- 保存命令
步骤 9:展平数据
与上一个练习类似,使用表格转换连接器的高级查询命令中的笛卡尔连接来展平数据集。
- 将 高级查询 命令从 表格转换 连接器添加到链中。
- 将 Array to CSV - Batters 和 Array to CSV - Toppings 命令连接到 Advanced Query 命令。
- 命令名称: 高级查询 - 展平 JSON 对象。
- 在 表格 部分,单击 添加 按钮一次,以便显示两个可用表格。请按以下要求完成表格部分:
| 文件 | 表格名称 |
| 已转换文件 输出来自 数组到 CSV - 击球手 命令 | 连击 |
| 已转换文件 输出来自 数组到 CSV - 配料 命令 | 配料 |
-
在“查询”参数中,输入以下查询:
选择 '<JSON FILE ITERATION>' 作为面糊、配料中的各种配料
-
- <JSON FILE ITERATION>应选中 并将其替换为从“变量”窗格中展开 组迭代器 ,然后选择 JSON 文件迭代。
- 选择 JSON 文件迭代变量后,单击绿色气泡,这将打开变量转换表单。
- 应用 从 JSON 获取值 变量转换,使用 种类 作为值字段。
- 输入variety后务必按回车键并接受转换!
- 请为 输入分隔符 和 输出分隔符 [] 参数指定逗号 。
- 勾选 “预览结果 ”选项。
- 保存命令。
步骤 9:测试练习
- 发布 链。
- 单击 执行 ,然后选择 运行链。
- 一旦链条完成,
- 单击“高级查询 - 扁平化 JSON 对象”节点,然后选择“输出”选项卡。确认每次迭代的记录数:
- 迭代 1:28 条记录
- 迭代 2:5 条记录
- 迭代 3:8 条记录
- 点击 预览结果 (眼睛图标),确认每次迭代的数据是否匹配。
- 单击“高级查询 - 扁平化 JSON 对象”节点,然后选择“输出”选项卡。确认每次迭代的记录数:
要了解有关使用 Chains 进行数据转换的更多信息,请查看 连接学习路径 - 转换简介!