在Azure Data Factory中提取文件名日期并按层级日期文件夹存储文件
Azure Data Factory 实现文件名日期提取与层级化存储
一、提取文件名中的日期部分
针对MUNDIPHARMA_HospitalPROFITS_20230228.zip这类文件名,可通过ADF内置字符串函数提取8位日期字符串,推荐两种可靠实现方式:
正则匹配法(适配前缀结构变化的场景)
使用regexMatch函数直接匹配文件名中的8位数字日期:regexMatch(item().name, '\\d{8}')该函数无需依赖固定分隔位置,能精准提取文件名中连续的8位日期数字。
拆分截取法(适用于文件名格式固定的场景)
先移除文件后缀,再按下划线拆分截取目标段:split(split(item().name, '.')[0], '_')[2]逻辑拆解:
split(item().name, '.')[0]:去掉.zip后缀,得到MUNDIPHARMA_HospitalPROFITS_20230228split(..., '_')[2]:按下划线拆分后取第三个元素,得到20230228
二、构建yyyy/mm/dd层级存储路径并批量处理
完成日期提取后,通过字符串截取拆分年、月、日,拼接成目标路径,结合ADF活动实现批量文件迁移:
拆分日期为年、月、日
假设提取的日期已存入变量@variables('extractedDate'),使用substring拆分:- 年份:
substring(variables('extractedDate'), 1, 4)→ 输出2023 - 月份:
substring(variables('extractedDate'), 5, 2)→ 输出02 - 日期:
substring(variables('extractedDate'), 7, 2)→ 输出28
- 年份:
拼接目标存储路径
用concat函数组合层级路径:concat(variables('yyyy'), '/', variables('mm'), '/', variables('dd'))最终生成路径格式如
2023/02/28批量处理流程示例
- Step 1:使用
Get Metadata活动,数据集指向源文件所在文件夹,勾选Child items获取所有zip文件列表 - Step 2:添加
For Each活动,遍历Get Metadata输出的文件列表 - Step 3:在
For Each内部,用Set Variable活动执行日期提取逻辑,将结果存入变量 - Step 4:添加
Copy活动,源数据集指向当前遍历的文件;目标数据集的文件夹路径设置为上述动态拼接的层级路径,完成文件迁移
- Step 1:使用
内容的提问来源于stack exchange,提问作者Athiya
相关产品推荐
相关产品推荐

