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

关于ADF Dataflow实现多行转多列数据转换的技术咨询

在ADF Dataflow中实现指定的行转列需求

这个需求完全可以用ADF Dataflow实现,你之前用Pivot转换没成功,核心问题是没给每个分组内的行生成唯一序号作为透视键。下面分场景给出具体实现步骤:

场景一:单字段行转列

源数据

Id,Name,Direction
123, ABC, North
123, ABC, South
123, ABC, East
123, ABC, West

实现步骤

  1. 添加派生列转换:生成分组内的行序号

    • 新增列名设为RowIndex
    • 表达式:rowNumber(partitionBy(Id, Name))
    • 作用:让每个Id+Name组合下的行从1开始依次编号,确保后续透视能按顺序生成列
  2. 添加透视(Pivot)转换:

    • 「分组依据」选择Id和Name
    • 「透视键」选择RowIndex
    • 「透视列」添加Direction,聚合方式选first()(因为每个序号对应唯一的Direction值)
    • 此时输出列会是Id、Name、Direction_1、Direction_2、Direction_3、Direction_4
  3. 可选:重命名列:用「选择」或「派生列」转换,把Direction_1改成Direction1,以此类推,得到你要的最终格式

场景二:多字段同步行转列

源数据

Id,Name,Direction,Status
123, ABC, North, A
123, ABC, South, B
123, ABC, East, C
123, ABC, West, D

实现步骤

  1. 添加派生列转换:和场景一一样,生成RowIndex,表达式rowNumber(partitionBy(Id, Name))

  2. 添加透视(Pivot)转换:

    • 「分组依据」选择Id和Name
    • 「透视键」选择RowIndex
    • 「透视列」同时添加两个字段:
      • 第一个选Direction,聚合方式first()
      • 第二个选Status,聚合方式first()
    • 此时输出列会是Id、Name、Direction_1、Direction_2、Direction_3、Direction_4、Status_1、Status_2、Status_3、Status_4
  3. 可选:重命名列:把Direction_1改为Direction1,Status_1改为Status1,完成格式调整

关键说明

Pivot转换需要一个唯一的透视键来确定每行数据对应到目标的哪一列,直接用Direction或Status当键的话,既无法保证列的顺序,也没法让Direction和Status的对应关系同步,所以必须先生成分组内的行序号作为透视键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 20:48:19