在本关联学习路径中,我们将创建一个链,演示如何将 XML 文件转换为 CSV 文件。此外,我们还将探讨如何比较数据集以找出差异。
| 主要学习目标 | XML连接器 |
| 次要学习目标 | 表格转换智能筛选器、更改分隔符和高级查询命令 |
| 先决条件 | 配置 XML 连接器连接 |
| 支持模板 | CLP | 访问 XML 数据 |
步骤 1:创建链
- 添加一个新的 链,并将链命名为: CLP | 访问 XML 数据。
- 创建两个链式变量,如下所示:
- 在 链式变量下,单击加号 (+) 两次。
- 请使用以下变量名称和值:
- XML变量
- 姓名: cv-XML-员工
- 值: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/employees.xml
- CSV 变量
- 姓名: cv-CSV-员工
- 值: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/employee_detail.csv
- XML变量
- 拯救链条。
步骤 2:以 CSV 格式检索数据
使用 HTTP 连接器以 CSV 格式检索与人员统计相关的数据。在后续步骤中,我们将以 XML 格式检索类似的人员统计信息,然后比较数据集以找出差异。
- 从 HTTP 连接器 向启动节点添加 GET 命令。
-
请使用以下值配置命令:
姓名 获取 - 员工人数(CSV 格式) 用户名 <leave blank> 密码 <leave blank> CA证书 <leave blank> 证书 <leave blank> 证书私钥 <leave blank> 显示回复 已核取 网址 cv-CSV-Employee 链式变量 查询字符串 <leave blank> 内容类型 文本/CSV 回复 <leave blank> - 保存命令。
步骤 3:以 XML 格式检索数据
使用 HTTP 连接器以 XML 格式检索与人员统计相关的数据。如步骤 2 所述,在后续步骤中,我们将比较 XML 数据集和 CSV 数据集,以找出差异。
- 将来自 HTTP 连接器 的 [ GET 命令添加到链中。
- 将起始节点(GET - CSV 格式的人员统计)连接到 GET 命令。
-
请使用以下值配置命令:
姓名 获取 - XML 格式的人员统计数据 用户名 <leave blank> 密码 <leave blank> CA证书 <leave blank> 证书 <leave blank> 证书私钥 <leave blank> 显示回复 已核取 网址 cv-XML-Employee 链式变量 查询字符串 <leave blank> 内容类型 application/xml 回复 <leave blank> - 保存命令。
步骤 4:将 XML 文件转换为分隔符格式
使用 XML 连接器将 XML 数据转换为 CSV 格式,以便我们稍后在链中利用需要分隔符格式数据的命令。
- 将 元素列表添加到 CSV 命令,从 XML 连接器 添加到链中。
- 将 GET - Headcount in XML Format 命令连接到 Element List to CSV 命令。
- 请使用以下值配置命令:
- 对于 输入文件 参数,从 GET - 以 XML 格式获取人数 命令中选择 响应输出 。
- 将 输入 文本参数留空。
- 对于 “根路径 ”参数,请输入以下信封信息:
/ employee_data/employee - 选中 “预览结果 ”参数复选框。
-
对于 列 部分,单击 添加 按钮 12 次。
对于每个添加的列,在 列名称 和 XPath 字段中输入上一步预览的数据记录中的字段名称。示例:
emp_id⚠️ XPath 字段区分大小写,必须与信封的大小写匹配。
- 对于多值分隔符参数,输入竖线 (|)。
- 保存命令。
- 发布、执行和运行链。
-
查看 元素列表到 CSV - 所有员工 命令节点的 ] 日志 [ 选项卡,并确认是否显示了员工列表。
⚠️ 请勿跳过此步骤的执行和结果审查,因为将在链中创建此命令的副本,任何错误随后都需要在多个命令实例中进行更正。
步骤 5:将转换后的 XML 文件从制表符分隔符更改为逗号分隔符
使用表格转换连接器将 XML 转换生成的输出从制表符分隔格式转换为逗号分隔格式。
- 从 表格转换 [ 连接器向链中添加 [] 更改分隔符 命令。
- 将 元素列表到 CSV - 所有员工 命令连接到 更改分隔符 命令。
- 请使用以下值配置命令:
- 名称: 更改分隔符 - 所有员工
- 输入文件: 转换后的文件输出 从 元素列表到 CSV - 所有员工 命令
- 输入分隔符: \t
- 输出分隔符:, (逗号)
- 保存命令。
步骤 6:比较 CSV 和 XML 数据集,找出差异
使用 高级查询 系统地识别 XML 和原生 CSV 数据集之间的差异。在这个例子中,找出 XML 数据集中与 CSV 数据集不同或缺失的任何记录。本练习无法识别 CSV 数据集中存在但 XML 数据集中不存在的任何其他记录。
- 将 高级查询 命令从 表格转换 连接器 添加到链中。
- 将 更改分隔符 - 所有员工 命令连接到 高级查询 命令。
- 命令名称: 高级查询 - 所有员工。
- 在 表格 部分,点击 添加 按钮添加第二个标签页。
- 第一张表:
- 指定 CSV 结果 输出,来自 更改分隔符 - 所有员工 命令。
- 指定 XML 作为 表名。
- 第二张表格:
- 指定 GET - Headcount in CSV Format 命令的 ] 响应输出 。
指定 CSV 作为 表名。 - 在查询参数中,输入以下内容:
Select * from XML EXCEPT Select * from CSV - 在 输入 分隔符和 输出 分隔符字段中,指定 逗号。
- 勾选 “预览结果 ”选项。
- 指定 GET - Headcount in CSV Format 命令的 ] 响应输出 。
- 第一张表:
- 保存命令。
- 发布、执行和运行链。
-
查看 “高级查询 - 所有员工 ”命令节点的 “日志 ”选项卡,并确认查询返回的记录中的员工 ID 与下面的记录匹配。
员工编号 01-6875791 10-4199621 38-3932553 63-0417180 78-3600453 85-6818050 97-2828467
步骤 7:添加命令组
在命令链中添加命令组,以便更好地组织命令。虽然这一步骤是本次练习的必要步骤,但对于该链条而言,这并不是技术上的要求。此步骤仅仅是为了说明组织链中节点的能力。
- 将 命令组 添加到链中。
- 将 GET - Headcount in XML Format 命令连接到命令组的 In 部分。
- 单击命令组,然后选择吸管图标,将命令颜色更改为 红色。
- 组名: 活跃员工。
步骤 8:仅筛选在职员工的 CSV 数据
使用智能筛选器,仅保留员工处于活跃状态时的员工记录。在定义筛选器时,我们假设终止(已终止)字段为空表示员工处于活跃状态。
- 从 表格转换连接器 向链中添加 智能筛选行 命令。
- 将 组启动 从命令组连接到 智能筛选 命令。
- 请使用以下值配置命令:
- 命令名称: 智能筛选行 - CSV 数据 - 活跃员工。
- 对于 输入文件 参数,从 GET - Headcount 以 CSV 格式命令中选择响应输出 。
- 将 输出 文件参数留空。
- 指定 逗号 作为 分隔符。
- 在 过滤器 部分完成以下步骤:
- 点击 文本过滤 器上的 “添加 ”按钮。
- 在 列名 参数中,输入 称为。
- 勾选 “不区分大小写 ”选项。
- 从 条件 下拉列表中,选择 等于。
- 在 比较文本 参数中,输入 true。
- 选中 而不是 选项。
- 请勿选中 “修剪 ”复选框。
此筛选器现在将识别字段“termed”不包含值 true 的任何记录(即,它包含“false”或为空)。
- 保持 “预览结果 ”选项选中。
- 反向 选项允许智能筛选器保留(选中)或删除(取消选中)所有符合筛选条件的行。在这个练习中,我们要保留“termed”字段值为真或空白的所有行。要实现
此目的,请勾选 “反向 ”复选框。 - 保存命令。
步骤 8:仅筛选在职员工的 CSV 数据
使用智能筛选器,仅保留员工处于活跃状态时的员工记录。在定义筛选器时,我们假设“终止”(“termed”)字段为空表示员工处于活跃状态。
- 从 表格转换连接器 向链中添加 智能筛选行 命令。
- 将 组启动 从命令组连接到 智能筛选 命令。
- 请使用以下值配置命令:
- 命令名称: 智能筛选行 - CSV 数据 - 活跃员工。
- 对于 输入文件,从 GET - Headcount 以 CSV 格式命令中选择响应输出 。
- 将 输出 文件参数留空。
- 指定 逗号 作为 分隔符。
- 在 过滤器 部分,
- 点击 文本过滤 器上的 “添加 ”按钮。
- 在 列名 参数中,输入 称为。
- 勾选 “不区分大小写 ”选项。
- 从 条件 下拉列表中,选择 等于。
- 在 比较文本 参数中,输入 true。
- 选中 而不是 选项。
- 请勿选中 “修剪 ”复选框。
此筛选器现在将识别字段“termed”不包含值 true 的任何记录(即,它包含“false”或为空)。
- 保持 预览结果 复选框选中状态。
- 反向 选项允许智能筛选器保留(选中)或删除(取消选中)所有符合筛选条件的行。在这个练习中,我们要保留所有 termed 字段值为 true 或空白的行。要实现这一点,请勾选 “反向 ”复选框。
- 保存命令。
步骤 9:在转换为分隔符时筛选 XML 数据
在此步骤中,我们将 XML 数据转换为分隔符格式,并对其进行筛选,以仅识别活跃员工。随后会将此数据集与过滤后的 CSV 数据集进行比较,以找出差异。
- 将 元素列表复制到 CSV - 所有员工 命令。
- 将 组开始 从命令组连接到 元素列表到 CSV - 所有员工(复制) 命令。
- 编辑命令,将其命名为: 元素列表到 CSV - 活跃员工。
- 在“根路径”参数中,输入以下内容。
/employee_data/employee[termed!='true']
这将识别字段“termed”的值不为 true 的任何记录(即,它包含“false”或为空)。 - 保存命令。
步骤 10:将筛选后的 XML 数据更改为逗号分隔格式
与完整的员工名册一样,从 XML 转换为制表符分隔的筛选后的在职员工名册需要转换为逗号分隔。
- 复制 更改分隔符 - 所有员工 命令。
- 将 元素列表到 CSV - 活跃员工 命令连接到 元素更改分隔符 - 所有员工(复制) 命令。
- 使用以下值配置命令。
- 名称:更改分隔符 - 活跃员工。
- 修改 输入文件 参数,以使用 转换文件 输出,来自 元素列表到 CSV - 活跃员工 命令。
- 保存命令。
步骤 11:检查与在职员工的差异
与完整的员工名册一样,从 XML 转换为制表符分隔的筛选后的在职员工名册需要转换为逗号分隔。
- 复制 高级查询 - 所有员工 命令。
- 将命令组的 输出 连接到 高级查询 - 所有员工(复制) 命令。将“高级查询 - 所有员工”命令连接到“组输出”可确保与“组开始”连接的所有内容在链继续执行到“组输出”中的命令之前完成。
- 请使用以下值配置命令:
- 名称: 高级查询 - 在职员工。
-
在 Tables 部分,使用以下值修改两个表的 File 参数:
表格 文件 XML CSV 结果输出 来自“更改分隔符 - 活跃员工”命令 CSV 智能筛选行输出 来自智能筛选行 - 仅限活动行,CSV 数据命令
- 保存命令。
步骤 12:测试练习
现在链式流程已完成,请测试结果。
- 发布 链。
- 单击 执行 ,然后选择 运行链。
- 链式查询运行完毕后,点击 高级查询 - 活跃员工 节点。
- 在 输出 选项卡上,确认已输出 4 条记录。
-
点击“日志”选项卡,确认查询返回的记录中的员工 ID 与下面的记录相符。
员工编号 01-6875791 63-0417180 78-3600453 85-6818050
要了解有关使用 Chains 进行数据转换的更多信息,请查看连接学习路径 - 转换简介!