Azure Data Factory从Blob取文件名设为列名失败求助
Azure Data Factory 附加列类型错误排查与解决
报错The value of property 'additionalColumns' is in unexpected type 'IList1'的核心原因是**Copy Data活动的additionalColumns`字段接收到了列表/数组类型的数据,但它要求的是单个列定义的对象或字符串值**。结合你用到的Get Metadata、Set Variable、Copy Data步骤,问题大概率出在以下几个环节:
常见错误点
Get Metadata 输出未正确提取单个文件名
如果你在Get Metadata里勾选了Child Items(获取多文件列表),它的输出是一个数组。如果直接把这个数组赋值给变量,后续在Copy Data里引用时就会触发类型不匹配。确认你是否需要获取单个文件的Name(仅勾选Name属性),还是多文件列表。变量类型设置错误
存储文件名的变量必须设为字符串类型,而不是数组/列表类型。如果变量是数组类型,哪怕你只存了一个文件名,引用到additionalColumns里也会被判定为IList类型,导致报错。Copy Data 附加列配置错误
在Copy Data的映射页添加额外列时,不要直接将数组变量填入值字段。正确的做法是用表达式引用字符串变量:- 确保变量存储的是单个文件名字符串
- 在列值中填写
@variables('你的文件名变量'),而非直接选择变量(避免误传列表类型)
修正方案
单个文件场景
- 调整Get Metadata活动,仅勾选
Name属性,确保输出为单个文件名字符串 - 创建/修改变量为字符串类型,赋值表达式用
@activity('Get Metadata活动名').output.name - 在Copy Data的映射中添加额外列,列值填入
@variables('你的字符串变量')
多文件批量处理场景
- Get Metadata勾选
Child Items,获取文件列表数组 - 添加ForEach活动,遍历
@activity('Get Metadata活动名').output.childItems - 在ForEach内部创建字符串变量,用
@item().name获取当前遍历的文件名 - 在ForEach内的Copy Data活动中,引用这个字符串变量作为额外列的值
内容的提问来源于stack exchange,提问作者solarissf
相关产品推荐
相关产品推荐

