如何在Azure Data Factory中映射无表头CSV文件的列
在Azure Data Factory数据流中动态重命名无表头CSV的指定列
步骤1:定义列映射参数
在数据流中创建一个数组类型的参数(比如命名为columnMappings),将源列与目标列的映射关系以JSON数组形式填入,示例如下:
[ {"sourceColumn": "_c0", "targetColumn": "customerName"}, {"sourceColumn": "_c2", "targetColumn": "cusid"}, {"sourceColumn": "_c6", "targetColumn": "你的自定义列名"}, {"sourceColumn": "_c8", "targetColumn": "你的自定义列名"}, {"sourceColumn": "_c9", "targetColumn": "你的自定义列名"}, {"sourceColumn": "_c10", "targetColumn": "你的自定义列名"}, {"sourceColumn": "_c11", "targetColumn": "你的自定义列名"}, {"sourceColumn": "_c12", "targetColumn": "depid"} ]
根据实际需求替换示例中的你的自定义列名即可。
步骤2:用派生列动态生成重命名后的列
- 在数据流中添加派生列转换,连接到CSV源数据集之后。
- 点击
添加列按钮,选择添加动态列。 - 在动态内容编辑器中输入以下表达式:
reduce(columnMappings, {}, (current, map) => current + @(map.targetColumn, toString(map.sourceColumn)))
这个表达式会遍历映射数组,将每个源列的值赋值给对应的目标列名,自动生成所有需要的新列。
步骤3:(可选)仅保留映射后的列
如果需要丢弃原始的_c*列,只保留重命名后的列:
- 添加选择转换,连接到派生列之后。
- 在选择转换的
列设置中,切换到动态内容模式,输入:
map(columnMappings, (map) => map.targetColumn)
这样选择转换会自动筛选出所有映射后的目标列,排除未定义的原始列。
注意事项
- 确保
columnMappings中的源列名与CSV生成的默认列名完全一致(ADF对列名大小写敏感)。 - 后续如果列的映射关系需要调整,只需修改
columnMappings参数的数组内容,无需改动数据流的转换逻辑。 - 测试时可通过数据流预览功能,确认列名映射和数据传递是否正常。
内容的提问来源于stack exchange,提问作者Developer Rajinikanth
相关产品推荐
相关产品推荐

