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

如何在Azure Logic Apps中高效实现数组条件分组求和与去重?

基于Azure Logic Apps原生功能的高效多字段分组求和方案

需求明确

需要对数组对象按name和condValue的组合分组,每组内累加value字段值。

输入示例:

[
  { "name": "alfons", "value": 100, "condValue": "D90" },
  { "name": "alfons", "value": 300, "condValue": "D10" },
  { "name": "alfons", "value": 200, "condValue": "D90" },
  { "name": "max", "value": 600, "condValue": "D90" },
  { "name": "max", "value":100, "condValue": "D90" }
]

期望输出:

[
  { "name": "alfons", "value": 300, "condValue": "D90" },
  { "name": "alfons", "value": 300, "condValue": "D10" },
  { "name": "max", "value": 700, "condValue": "D90" }
]

高效实现步骤

1. 生成唯一分组键(Select操作)

先通过Select把每个原始对象转换成带组合分组键的结构,用name+双竖线+condValue作为唯一标识,避免字段值本身含特殊字符导致的分组冲突。

配置细节:

  • 输入源:你的原始数组
  • 映射规则:
    • groupKey: 表达式写concat(item()?['name'], '||', item()?['condValue'])
    • name: item()?['name']
    • condValue: item()?['condValue']
    • value: item()?['value']

2. 按分组键聚合求和(Group By操作)

用Logic Apps自带的Group By操作直接完成分组求和,这一步是性能核心,替代嵌套循环的低效逻辑。

配置细节:

  • 输入源:步骤1输出的数组
  • 分组依据:选择groupKey字段
  • 聚合设置:
    • 名称填totalValue
    • 操作类型选Sum
    • 目标字段选value

3. 整理成目标格式(Select操作)

最后用Select把分组后的结构转换成你要的输出格式,去掉临时的groupKey,把求和后的totalValue重命名为value。

配置细节:

  • 输入源:步骤2输出的分组结果
  • 映射规则:
    • name: first(item()?['items'])?['name'](同组内的name必然一致,取组内第一个对象的name即可)
    • condValue: first(item()?['items'])?['condValue']
    • value: item()?['totalValue']

方案优势

  • 全程仅用3个原生操作,无嵌套循环,大幅减少不必要的数组遍历次数
  • Group By是Logic Apps内部优化的聚合逻辑,性能远优于手动循环判断
  • 分组键确保每个name+condValue组合只生成一条结果,彻底避免重复输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:33:30