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

使用Dataweave 2.0转换CSV结构时如何过滤空值属性

DataWeave 2.0 CSV空值过滤转换方案

需求说明

需要将输入CSV按规则转换:

  • 每行以gaID为前缀,和后续属性用^分隔
  • 后续属性格式为字段名:属性值,多个属性用;分隔
  • 空值属性不在输出中展示

输入CSV示例

gaID,gender,age,city,state
GA1.3.332,male,20-30,,
GA1.3.1041d,female,30-40,Sao Paulo,Sao Paulo
GA1.3.1041d,,,Sao Paulo

期望输出示例

GA1.3.332^gender:male;age:20-30
GA1.3.1041d^gender:female;age:30-40;city:Sao Paulo;state:Sao Paulo
GA1.3.1041d^state:Sao Paulo

问题原因

原有代码固定生成所有字段的拼接结果,没有做非空判断,导致空值字段仍会输出字段名:的无效内容,且输出格式选择application/csv不符合最终单行文本的输出要求。

修改后代码

%dw 2.0
output text/plain
---
payload map ((item) -> 
    item.gaID ++ "^" ++ (
        item -- "gaID" 
        filterObject ((value) -> !isEmpty(value))
        pluck (($$ as String) ++ ":" ++ $)
        joinBy ";"
    )
) joinBy "\n"

代码说明

  1. 先移除每条数据中的gaID字段,避免参与后续属性拼接
  2. 通过filterObject过滤所有值为空的字段,空字符串、null都会被过滤
  3. 把保留的键值对统一转换为字段名:值的字符串格式
  4. 多个属性用;拼接后和gaID用^拼接
  5. 最终所有行用换行符拼接,直接输出纯文本符合要求
  6. 无需手动枚举所有字段,后续新增的属性字段也会自动按规则处理,兼容原代码中列的maritalStatus、householdIncome等所有额外字段

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:24:06