我的输入是一个包含以下数据的 csv 文件
ID、姓名、联系方式、公司名称、部门 101,天使,0000000000,XYZ组织,HR 102,梅琳达,0000000000,XYZ 组织,帐户 103,杰克,0000000000,XYZ组织,HR 104、罗恩,0000000000,XYZ组织,HR 105,玛丽,0000000000,XYZ 组织,帐户 106,伊娃,0000000000,XYZ 组织,销售 107,内特,0000000000,XYZ 组织,销售
根据部门名称,我想将记录写入不同的文件,如下所示
人力资源档案 101,天使,0000000000,XYZ组织,HR 103,杰克,0000000000,XYZ组织,HR 104,罗恩,0000000000,XYZ 组织,HR
账户档案 102,梅琳达,0000000000,XYZ 组织,帐户 105,玛丽,0000000000,XYZ 组织,帐户
如何根据部门名称将数据隔离并写入不同的文件?
使用 groupBy() 按部门分组,然后 pluck() 转换为易于在 foreach 范围内迭代的数组,您可以在其中写入每个文件。
%dw 2.0
output application/java
---
payload groupBy($.Department) pluck {department:$$, records:$}
输出(为清楚起见,为 JSON,应为 Java)
[
{
"department": "HR ",
"records": [
{
"ID": "101",
"Name": "Angel",
"ContactNo": "0000000000",
"CompName": "XYZ Org",
"Department": "HR "
},
{
"ID": "104",
"Name": "Ron",
"ContactNo": "0000000000",
"CompName": "XYZ Org",
"Department": "HR "
}
]
},
{
"department": "Accounts ",
"records": [
{
"ID": "102",
"Name": "Melinda",
"ContactNo": "0000000000",
"CompName": "XYZ Org",
"Department": "Accounts "
},
{
"ID": "105",
"Name": "Marie",
"ContactNo": "0000000000",
"CompName": "XYZ Org",
"Department": "Accounts "
}
]
},
{
"department": "HR",
"records": [
{
"ID": "103",
"Name": "Jack",
"ContactNo": "0000000000",
"CompName": "XYZ Org",
"Department": "HR"
}
]
},
{
"department": "Sales",
"records": [
{
"ID": "106",
"Name": "Eva",
"ContactNo": "0000000000",
"CompName": "XYZ Org",
"Department": "Sales"
},
{
"ID": "107",
"Name": "Nate",
"ContactNo": "0000000000",
"CompName": "XYZ Org",
"Department": "Sales"
}
]
}
]