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

如何在Azure Data Factory数据流中为列添加序号后缀并生成复合主键

ADF数据流实现C6列生成及主键设置方案

一、生成连续三位前导零序号

源表无主键时,ROWNUMBER()需明确排序规则才能生成连续行号,否则会因数据流处理顺序随机导致序号混乱:

  • 添加派生列转换,在表达式中用窗口函数+格式化函数生成三位序号:
    lpad(toString(rownumber(order by C2 asc)), 3, '0')
    
    这里order by C2 asc是为了固定排序逻辑,你可以替换成任意现有列(比如C3、C4),确保行号连续唯一。如果不需要特定排序,也可以写rownumber(),但生产环境建议指定排序字段避免序号波动。

二、拼接生成C6列

在同一个派生列转换中,直接生成C6列,表达式为:

concat(C2, C3, C4, lpad(toString(rownumber(order by C2 asc)), 3, '0'))

如果觉得表达式过长,可拆分两步:先派生临时列SeqNum存储格式化后的序号,再派生C6列做拼接:

-- 第一步生成SeqNum
lpad(toString(rownumber(order by C2 asc)), 3, '0')
-- 第二步生成C6
concat(C2, C3, C4, SeqNum)

三、设置C6为主键

在目标表转换中配置主键:

  • 选中目标转换,切换到设置选项卡
  • 在「主键」区域点击「添加」,选择C6列作为主键
  • 确保目标表的C6列数据类型为字符串,长度足够容纳拼接后的内容(根据C2/C3/C4的实际长度总和+3设置)

特殊场景处理

若源数据是分区存储格式(如Parquet、ORC),直接用ROWNUMBER()会按分区生成行号,导致全局序号不连续。此时需先添加排序转换,对任意列做全局排序,再执行派生列生成序号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 12:12:40