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

Azure Logic App Consumption中按ID聚合求和合并数组项的方法

问题描述

我有一个HTTP动作返回的对象数组,格式如下:

[
{
"Id":1,
"Good":0,
"Average":0,
"Bad":1
},
{
"Id":2,
"Good":1,
"Average":0,
"Bad":0
},
{
"Id":1,
"Good":0,
"Average":1,
"Bad":0
},
{
"Id":3,
"Good":0,
"Average":0,
"Bad":1
},
{
"Id":1,
"Good":0,
"Average":1,
"Bad":0
}
]

需要不使用内联JavaScript,仅通过Data Operation动作实现按Id合并记录,并对Good、Average、Bad字段的数值求和,最终得到如下结果:

[
{
"Id":1,
"Good":0,
"Average":2,
"Bad":1
},
{
"Id":2,
"Good":1,
"Average":0,
"Bad":0
},
{
"Id":3,
"Good":0,
"Average":0,
"Bad":1
}
]

实现步骤

以低代码平台的Data Operation动作为例,按以下步骤操作:

1. 提取并去重唯一ID列表

  • 添加「Select」动作,输入源为HTTP返回的数组,映射规则仅保留Id字段:@item()?['Id']。
  • 添加「Union」动作,将上述Select的输出作为两个输入参数(利用Union特性实现去重),得到所有唯一的Id数组。

2. 循环处理每个唯一ID

  • 添加「Apply to each」动作,输入源为去重后的ID数组。
  • 在循环内部依次执行:

    a. 筛选当前ID对应的所有记录

    添加「Filter array」动作,输入源为HTTP返回的原始数组,筛选条件设为@equals(item()?['Id'], items('Apply_to_each')),得到当前ID的所有匹配记录。

    b. 对数值字段求和

    直接用表达式对筛选后的记录字段求和:
    • Good总和:@sum(body('Filter_array'), 'Good')
    • Average总和:@sum(body('Filter_array'), 'Average')
    • Bad总和:@sum(body('Filter_array'), 'Bad')

    c. 构造合并后的对象

    添加「Compose」动作,组装成目标格式的对象:
    {
      "Id": @items('Apply_to_each'),
      "Good": @sum(body('Filter_array'), 'Good'),
      "Average": @sum(body('Filter_array'), 'Average'),
      "Bad": @sum(body('Filter_array'), 'Bad')
    }
    

3. 输出最终结果

循环结束后,「Apply to each」的输出即为按ID合并并完成求和的对象数组。

内容的提问来源于stack exchange,提问作者Mateech

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:32:32