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

如何在Azure Data Factory数据流中动态拆分多值housenumber列

Azure Data Factory 跨行多值门牌号字段处理解决方案

问题修复核心思路

先完成跨行同主键数据的合并清洗,再用数组展开替代手动建列,自动适配任意数量的门牌号值,同时兼容后续透视与接收器转换。

具体实现步骤

步骤1:合并跨行数据并标准化清洗(解决拆分不符合预期问题)

  • 首先添加聚合转换:分组键设置为Id、Person两列,新增聚合字段merged_housenumber,表达式为concatWS(',', collect(housenumber)),将同一个主键关联的所有跨行门牌号内容拼接为单个字符串
  • 新增派生列转换:
    1. 先清洗非法字符,生成cleaned_housenumber,表达式为replace(replace(replace(merged_housenumber, '、', ','), '\n', ''), ' ', ''),统一分隔符为半角逗号,去除换行、空格、顿号等干扰字符
    2. 拆分生成数组:housenumber_arr = filter(split(cleaned_housenumber, ','), #item != ''),过滤掉拆分产生的空值元素

步骤2:数组扁平化展开(解决手动建列维护成本高问题)

直接添加扁平化(Flatten)转换,输入端接上述派生列输出:

  • 选择housenumber_arr作为要展开的数组字段
  • 展开后自动为每个门牌号生成独立行,每行保留原有Id、Person字段,新增单个门牌号字段可命名为single_housenumber
  • 该转换可自动适配任意数量的门牌号值,不管是10个还是100个都无需调整规则,零维护成本

步骤3:对接透视与接收器转换

如果需要将行级门牌号转为多列格式输出,在扁平化转换后新增透视转换即可:

  • 分组键选择Id、Person
  • 提前在派生列中新增序号字段:house_seq = concat('house_', toString(rowNumber() over(partition by Id, Person order by single_housenumber))),用于生成透视后的列名
  • 透视键选择house_seq字段,聚合表达式设置为first(single_housenumber)
  • 透视转换会自动生成匹配最大门牌号数量的house_1、house_2...列,无需手动定义
  • 透视后的输出直接对接接收器转换即可写入目标库或文件,适配所有支持的sink类型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 09:30:04