如何在Azure Logic App中按条件从JSON集合提取数据分组求和
Azure Logic App 实现Res数组按I_Id分组统计Qty总和
注意:单独使用Condition连接器无法完成分组聚合逻辑,Condition仅支持布尔值判断走分支,不具备数组分组、数值累加的处理能力,以下是基于Logic App内置操作、可直接落地的实现方案,可按需求嵌入Condition判断逻辑
前置准备
先从你的JSON载荷里解析出目标Res数组,也就是示例里Release[0].Res对应的数组内容,后续所有操作都基于这个数组处理。
具体实现步骤
- 初始化2个全局变量
- 变量名
GroupedResult,类型选Array,初始值设为空数组[],用于存储最终分组求和后的结果 - 变量名
DistinctIIdList,类型选Array,初始值设为空数组[],用于存储去重后的所有I_Id值
- 变量名
- 提取去重I_Id列表
添加内置Select操作,输入选择你的Res数组,映射配置仅保留I_Id字段,之后用union()函数对Select输出的结果做去重,表达式如下,去重结果赋值给DistinctIIdList变量:union(body('Select_提取IId字段'), body('Select_提取IId字段')) - 遍历每个I_Id计算对应Qty总和
添加For each循环,遍历对象选择DistinctIIdList,循环内部执行以下操作:- 添加
Filter array操作,输入为原始Res数组,筛选规则为:数组项的I_Id字段等于当前循环遍历到的I_Id值 - 初始化循环内临时变量
CurrentQtySum,类型为Integer,初始值设为0 - 添加内层
For each循环,遍历刚才Filter array输出的筛选结果,每遍历一项就更新CurrentQtySum的值,累加表达式为:add(variables('CurrentQtySum'), item()?['Qty']) - 内层循环执行完成后,将当前分组结果追加到
GroupedResult数组,追加的对象结构为:{ "I_Id": item(), "TotalQty": variables('CurrentQtySum') }
- 添加
- 接入Condition连接器的配置方法
如果你需要在流程中使用Condition做校验,可以在Filter array操作之后添加Condition控件,判断规则设置为:
判断结果为greater(length(body('Filter_array')), 0)true的分支走后续求和、追加结果逻辑,为false的分支直接跳过即可,避免空数组遍历导致的流程报错。
按照你提供的示例JSON计算:两个Res条目的I_Id均为
828929,单条Qty为1,最终对应分组的TotalQty计算结果为2,符合统计预期。
内容的提问来源于stack exchange,提问作者kanika
相关产品推荐
相关产品推荐

