在Azure Data Factory数据流中基于文件名创建动态文件夹
在Azure Data Factory数据流中实现动态日期文件夹的解决方案
核心问题说明
你之前报错是因为混淆了Copy活动和数据流的表达式语法:Copy活动用@开头的管道表达式,而数据流有独立的函数语法,引用参数要加$前缀,列直接用名称调用。
具体实现步骤
传递文件名到数据流(基于管道参数场景)
- 在数据流的「参数」面板添加一个字符串类型参数(比如
filenameParam)。 - 在管道调用该数据流时,将存储文件名的管道参数赋值给这个数据流参数。
- 在数据流的「参数」面板添加一个字符串类型参数(比如
提取并转换日期格式
针对文件名格式yyyy-MM-dd_xxx.csv,用数据流内置函数处理:- 拆分文件名提取日期部分:
split($filenameParam, '_')[0](如果文件名存储在数据流列中,直接替换为列名,比如split(FileNameColumn, '_')[0]) - 将
yyyy-MM-dd转换为yyyy/mm/dd格式:replace(split($filenameParam, '_')[0], '-', '/')
- 拆分文件名提取日期部分:
配置Sink动态文件夹
- 在Sink活动的「存储设置」中,找到「文件夹路径」,点击表达式编辑器(fx图标)。
- 输入上述转换后的表达式,确认后保存即可。
验证技巧
可以先在数据流中添加「派生列」活动,把日期转换的表达式写入新列,预览数据确认格式正确后,再将表达式复制到Sink的文件夹路径中,避免直接配置出错。
内容的提问来源于stack exchange,提问作者Fasan K
相关产品推荐
相关产品推荐

