Azure Data Factory:如何将label字段或item().name传入Sink文件名Pattern
在Azure Data Factory中实现自定义输出文件名的解决方案
方法一:从文件名提取label生成目标文件名
由于你的源CSV文件名和其label列值完全一致,可按以下步骤配置:
在DataFlow源中捕获文件名
打开DataFlow的源转换设置,勾选「列中的文件名」,指定列名(如source_filename),当前处理的文件名会被作为一列加入数据流。派生label值
添加「派生列」转换,用表达式去除文件名的.csv后缀得到label:replace(source_filename, '.csv', '')将派生列命名为
label。配置输出文件名Pattern
在DataFlow的输出转换中,将「文件名选项」切换为「Pattern」,然后在Pattern字段输入表达式:concat(label, '_log.csv')这样输出文件就会自动生成
has_stuff_log.csv这类格式。
方法二:直接传递ForEach的item().name到DataFlow
如果方法一无法满足需求,可直接利用ForEach循环的item().name构造文件名:
给DataFlow添加参数
在DataFlow的「参数」面板创建字符串类型参数(如input_file_name)。ForEach中传递参数
在ForEach循环的DataFlow活动配置里,将input_file_name的参数值设为item().name。输出中使用参数生成文件名
在输出转换的「文件名选项」选「Pattern」,输入表达式:concat(replace($input_file_name, '.csv', ''), '_log.csv')该表达式会先去掉源文件名的
.csv后缀,再拼接_log.csv得到最终文件名。
关键注意事项
- 确保ForEach循环的「项」是通过Get Metadata活动获取的Blob存储文件列表(子项)。
- 若输出路径存在重复文件名风险,可额外添加日期或文件夹路径区分,避免文件覆盖。
内容的提问来源于stack exchange,提问作者Mr. Blond
相关产品推荐
相关产品推荐

