You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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,循环内部执行以下操作:
    1. 添加Filter array操作,输入为原始Res数组,筛选规则为:数组项的I_Id字段等于当前循环遍历到的I_Id值
    2. 初始化循环内临时变量CurrentQtySum,类型为Integer,初始值设为0
    3. 添加内层For each循环,遍历刚才Filter array输出的筛选结果,每遍历一项就更新CurrentQtySum的值,累加表达式为:
      add(variables('CurrentQtySum'), item()?['Qty'])
      
    4. 内层循环执行完成后,将当前分组结果追加到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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 10:54:47