您可以使用 JoltTransformJSON 处理器来实现此目的,该处理器可转换 JSON。它提供了一个split 和sum 转换,你需要得到你想要的输出。
策略是:
- 检查 CSV 文件的每一行
- 从 CSV 转换为 JSON
- 应用 Jolt 转换,将字符串拆分、转换为整数并最终求和
- 将记录转换回 CSV
- 将记录合并到 CSV 文件中
总流量:
生成流文件:
SplitRecord 将获取每个 CSV 行并将其转换为 JSON:
创建CSVReader 和JsonRecordSetWriter。设置 CSVReader 以使用第一行作为标题行。保留默认属性。将每个拆分的记录设置为 1。
使用JoltTransformJson 处理器并提供以下颠簸规范:
[
{
"operation": "modify-default-beta",
"spec": {
"downloadSplit": "=split(',', @(2,download))",
"uploadSplit": "=split(',', @(2,upload))"
}
}, {
"operation": "modify-overwrite-beta",
"spec": {
"downloadSplit": ["=toInteger", 0],
"uploadSplit": ["=toInteger", 0]
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"download": "=intSum(@(1,downloadSplit))",
"upload": "=intSum(@(1,uploadSplit))"
}
}, {
"operation": "shift",
"spec": {
"download": "download",
"upload": "upload"
}
}
]
- 拆分
- 转换为整数
- 总和
- 用转换后的内容覆盖原始下载/上传
将记录转换回 CSV:
保留读取器和写入器的默认属性。最后将每条记录合并回一个 CSV 文件:
使用具有默认属性的 CSV 读取器和写入器。您可以通过调整MergeRecord 的属性来控制每个 CSV 文件的记录数。阅读更多关于属性 here 的含义。
输出:
请注意,原始行的顺序发生了变化。第一行对应于输入中的最后一行。