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

Dataweave处理CSV数据:过滤含/行、取resolution列高频值及qty计算

DataWeave处理CSV数据完整实现

需求说明

  • 删除number列包含/的无效行
  • 按number+join_date字段分组聚合
  • 计算avginqty/avgoutqty的非空平均值,保留qty单位
  • 每个分组取resolution列出现频率最高的值

输入样例

number,fruit,colour,join_date,avginqty,avgoutqty,resolution
282,apple,red,today,3 qty,2 qty,640*320
282,apple,red,today,3 qty,,200*200
282,apple,red,today,1 qty,,640*320
282,banana,yellow,yesterday,,,
282,banana,yellow,yesterday,1 qty,,200*200
/283,banana,yellow,yesterday,1 qty,,200*200

完整实现代码

%dw 2.0
output application/csv header=true, separator=","
---
// 第一步:过滤number带/的无效行
payload filter not ($.number contains "/")
// 第二步:按number+join_date分组,加下划线避免拼接歧义
groupBy ((item) -> item.number ++ "_" ++ item.join_date)
mapObject ((group) => {
    number: group[0].number,
    fruit: group[0].fruit,
    colour: group[0].colour,
    join_date: group[0].join_date,
    // 计算平均入库量
    avginqty: do {
        var validVals = group.avginqty filter ($ != "") map (($ replace " qty" with "") as Number)
        ---
        if(sizeOf(validVals) > 0) (avg(validVals) as String) ++ " qty" else ""
    },
    // 计算平均出库量
    avgoutqty: do {
        var validVals = group.avgoutqty filter ($ != "") map (($ replace " qty" with "") as Number)
        ---
        if(sizeOf(validVals) > 0) (avg(validVals) as String) ++ " qty" else ""
    },
    // 取频率最高的分辨率
    resolution: do {
        var validRes = group.resolution filter ($ != "")
        var resCount = validRes groupBy ($) pluck ((items, res) -> {res: res, count: sizeOf(items)})
        var maxFreqRes = resCount orderBy (-$.count)[0].res
        ---
        maxFreqRes default ""
    }
}) pluck $

代码说明

  • 过滤逻辑:先做数据清洗排除无效行,避免脏数据参与后续计算
  • Qty计算修正:补充了字符串单位提取逻辑,先把X qty格式的内容转换为数值再求均值,避免类型报错,直接调用内置avg函数简化计算逻辑
  • 最高频分辨率计算:先过滤空值,再对分辨率分组统计出现次数,按次数倒序后取第一条的分辨率值,为空时返回默认空字符串
  • 输出配置:指定输出为CSV格式,保留表头、分隔符为逗号,和需求输出格式完全匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:39:05