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

如何在Mule中用DataWeave基于总数和拆分数量生成指定数组

DataWeave实现按指定大小拆分数值区间数组

核心实现代码

假设你的参数totalCount和splitNumber是动态输入(比如来自payload、变量或属性),可以用以下DataWeave 2.0代码生成目标数组:

%dw 2.0
output application/json
var totalCount = 1000 // 可替换为动态参数,比如 payload.totalCount 或 vars.totalCount
var splitNumber = 100 // 可替换为动态参数,比如 payload.splitNumber 或 vars.splitNumber
var totalGroups = ceil(totalCount / splitNumber)
---
(1 to totalGroups) map (groupIndex) -> {
    start: (groupIndex - 1) * splitNumber + 1,
    end: min(groupIndex * splitNumber, totalCount)
}

代码解释

  1. 计算总组数:用ceil(totalCount / splitNumber)确保即使totalCount不是splitNumber的整数倍,也能生成最后一组(比如totalCount=1050、splitNumber=100时,会生成11组,最后一组start:1001, end:1050)
  2. 生成区间对象:遍历1到总组数的范围,对每个组索引:
    • start:上一组结束值+1,公式为(groupIndex - 1) * splitNumber + 1
    • end:当前组的结束值,用min()处理最后一组可能不足splitNumber的情况,确保不超过totalCount

示例输出(当totalCount=1000、splitNumber=100时)

[
  {"start":1,"end":100},
  {"start":101,"end":200},
  {"start":201,"end":300},
  {"start":301,"end":400},
  {"start":401,"end":500},
  {"start":501,"end":600},
  {"start":601,"end":700},
  {"start":701,"end":800},
  {"start":801,"end":900},
  {"start":901,"end":1000}
]

动态参数替换

如果参数来自Mule的消息属性或变量,只需替换var定义部分:

var totalCount = attributes.queryParams.totalCount as Number
var splitNumber = vars.splitSize as Number

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 23:02:42