Azure Data Factory复制活动处理源Excel重复列映射问题
处理ADF复制活动中Excel重复列名的映射问题
方法1:用列索引替代列名识别源列
ADF的Excel源支持通过列索引(从0开始计数)定位列,完全避开重复列名的冲突:
- 打开复制活动的源设置,选好Excel数据集后,进入连接选项卡,展开高级设置
- 在列名下拉选从文件中读取,切到映射选项卡
- 不用列名匹配,直接用
Column_0、Column_1这类索引标识(对应Excel的第1、第2列),把第一个'P'对应的索引列映射到SQL的'A'列,第二个'P'对应的索引列映射到'B'列
方法2:用数据流先给重复列重命名
如果需要更灵活的预处理,用数据流先给重复列改名再同步:
- 新建一个数据流活动,源连接ADLS上的目标Excel文件
- 添加派生列转换,ADF会自动给重复列加后缀(比如
P_1),直接把第一个P重命名为P1,第二个P_1重命名为P2(表达式直接写对应列名即可) - 接着加接收器连接SQL Server,把
P1映射到'A'列,P2映射到'B'列 - 最后用这个数据流活动替换原来的复制活动即可
方法3:手动编辑映射JSON强制指定列对应
不想用数据流的话,直接改复制活动的映射代码:
- 在复制活动的映射界面,点击右上角的代码按钮(</>图标)进入JSON编辑模式
- 修改
translator里的映射规则,用ordinal(列索引)指定源列,示例如下:
"translator": { "type": "TabularTranslator", "mappings": [ { "source": { "ordinal": 2 // 第一个P列的索引,从0开始算 }, "sink": { "name": "A" } }, { "source": { "ordinal": 4 // 第二个P列的索引 }, "sink": { "name": "B" } } ] }
- 保存后,ADF就会按索引定位源列,不会因为列名重复出错
内容的提问来源于stack exchange,提问作者shining_star
相关产品推荐
相关产品推荐

