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

如何使用DataWeave 2.0按指定列聚合HH:MM格式的项目工时数据

DataWeave按项目汇总HH:MM格式工时解决方案

核心处理逻辑如下:

  • 编写辅助函数将HH:MM格式的字符串转换为总分钟数,用于数值聚合运算
  • 按jobName字段对所有工时记录分组
  • 对每个项目分组的总分钟数求和
  • 编写反向转换函数将汇总后的总分钟数转回HH:MM格式,不足两位自动补前导零

完整DataWeave 2.0脚本

%dw 2.0
output application/json
// 转换HH:MM格式为总分钟数
fun timeToMinutes(timeStr: String): Number = 
    (timeStr splitBy ":" map ($ as Number)) reduce ((item, acc=0) -> acc * 60 + item)

// 转换总分钟数为HH:MM格式,自动补前导零
fun minutesToTime(totalMinutes: Number): String = 
    do {
        var hours = (totalMinutes / 60) as Number {format: "00"}
        var minutes = mod(totalMinutes, 60) as Number {format: "00"}
        ---
        "$(hours):$(minutes)"
    }
---
payload.response.result groupBy $.jobName mapObject ((value, key) -> 
    (key): minutesToTime(sum(value map timeToMinutes($.hours)))
)

输出结果

运行上述脚本即可得到期望的输出:

{
  "Project1": "19:00",
  "Project2": "10:00",
  "Project3": "06:00"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:45:04