如何在Power Automate中移除数组部分重复项,保留唯一订单号
在Power Automate中按订单号去重数组
针对你提供的数组,要实现每个订单号(cr52a_ordernumber)仅保留一条记录,下面提供两种实用方法:
方法一:可视化操作步骤(适合新手)
步骤1:提取唯一订单号数组
- 添加选择操作,输入你的原始数组,映射仅保留
cr52a_ordernumber字段,输出会是["123","123","123","456","456"] - 添加联合操作,将选择操作的输出作为输入,得到去重后的订单号数组:
["123","456"]
步骤2:匹配原数组生成去重结果
- 初始化一个空数组变量(命名为
去重后订单数组) - 添加应用到每一个操作,输入步骤1得到的唯一订单号数组
- 在循环内部:
- 添加筛选数组操作,输入原始数组,筛选条件设为
cr52a_ordernumber等于 当前循环的订单号(items('应用到每一个')) - 添加取第一项操作,输入筛选数组的输出(若要保留最新日期,可先对筛选结果按
cr52a_date降序排序再取第一项) - 添加追加到数组变量操作,将取到的条目加入
去重后订单数组
- 添加筛选数组操作,输入原始数组,筛选条件设为
循环结束后,去重后订单数组就是你要的结果。
方法二:表达式直接去重(高效简洁)
使用XPath表达式一次性完成去重,无需多步操作:
- 添加撰写操作,输入以下表达式:
json(xpath(xml(json(concat('{"root":', outputs('原始数组的操作名称'), '}'))), '//root/*[not(cr52a_ordernumber = preceding-sibling::*/cr52a_ordernumber)]'))
注意:将
outputs('原始数组的操作名称')替换为你实际存储原始数组的操作名称(比如“初始化变量”的名称)
这个表达式会直接返回每个订单号保留第一条记录的去重数组。如果要保留最新日期的记录,可调整XPath表达式为:
json(xpath(xml(json(concat('{"root":', outputs('原始数组的操作名称'), '}'))), '//root/*[cr52a_date = max(//*[cr52a_ordernumber=current()/cr52a_ordernumber]/cr52a_date)]'))
内容的提问来源于stack exchange,提问作者Robby
相关产品推荐
相关产品推荐

