如何使用DataWeave按指定条件更新CSV的Salary列值?
DataWeave解决方案:按条件更新CSV的Salary字段
以下是满足需求的DataWeave脚本,核心逻辑是先将CSV解析为结构化数据,再根据指定条件修改字段,最后转回CSV格式:
%dw 2.0 input payload application/csv output application/csv header=true --- payload map (item, index) -> { Id: item.Id, Name: item.Name, Salary: if (item.Location == "Mumbai" and (item.Date as Date {format: "MM/dd/yyyy"}) > |2020-01-20|) 50000 else item.Salary, Location: item.Location, Date: item.Date }
关键细节说明:
- 日期类型转换:CSV中的
Date是字符串格式,必须用as Date {format: "MM/dd/yyyy"}转换为日期类型,才能和DataWeave日期字面量|2020-01-20|进行有效比较。 - 条件判断:通过
if-else逻辑精准匹配规则——仅当Location等于"Mumbai"且日期晚于2020年1月20日时,将Salary设为50000,其余情况保留原薪资值。 - CSV输出配置:
output application/csv header=true确保输出结果保留原始CSV表头结构。
处理后的输出结果:
Id,Name,Salary,Location,Date 123,Ganesh,10000,Pune,02/22/2020 234,Sanket,50000,Mumbai,02/20/2021 345,Mohan,30000,Kolkata,01/23/2023 123,Ganesh,30000,Chennai,02/28/2023 234,Sanket,40000,Goa,02/20/2024
内容的提问来源于stack exchange,提问作者Santosh Gore
相关产品推荐
相关产品推荐

