You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Azure Data Factory中提取文件名日期并按层级日期文件夹存储文件

Azure Data Factory 实现文件名日期提取与层级化存储

一、提取文件名中的日期部分

针对MUNDIPHARMA_HospitalPROFITS_20230228.zip这类文件名,可通过ADF内置字符串函数提取8位日期字符串,推荐两种可靠实现方式:

  1. 正则匹配法(适配前缀结构变化的场景)
    使用regexMatch函数直接匹配文件名中的8位数字日期:

    regexMatch(item().name, '\\d{8}')
    

    该函数无需依赖固定分隔位置,能精准提取文件名中连续的8位日期数字。

  2. 拆分截取法(适用于文件名格式固定的场景)
    先移除文件后缀,再按下划线拆分截取目标段:

    split(split(item().name, '.')[0], '_')[2]
    

    逻辑拆解:

    • split(item().name, '.')[0]:去掉.zip后缀,得到MUNDIPHARMA_HospitalPROFITS_20230228
    • split(..., '_')[2]:按下划线拆分后取第三个元素,得到20230228

二、构建yyyy/mm/dd层级存储路径并批量处理

完成日期提取后,通过字符串截取拆分年、月、日,拼接成目标路径,结合ADF活动实现批量文件迁移:

  1. 拆分日期为年、月、日
    假设提取的日期已存入变量@variables('extractedDate'),使用substring拆分:

    • 年份:substring(variables('extractedDate'), 1, 4) → 输出2023
    • 月份:substring(variables('extractedDate'), 5, 2) → 输出02
    • 日期:substring(variables('extractedDate'), 7, 2) → 输出28
  2. 拼接目标存储路径
    用concat函数组合层级路径:

    concat(variables('yyyy'), '/', variables('mm'), '/', variables('dd'))
    

    最终生成路径格式如2023/02/28

  3. 批量处理流程示例

    • Step 1:使用Get Metadata活动,数据集指向源文件所在文件夹,勾选Child items获取所有zip文件列表
    • Step 2:添加For Each活动,遍历Get Metadata输出的文件列表
    • Step 3:在For Each内部,用Set Variable活动执行日期提取逻辑,将结果存入变量
    • Step 4:添加Copy活动,源数据集指向当前遍历的文件;目标数据集的文件夹路径设置为上述动态拼接的层级路径,完成文件迁移

内容的提问来源于stack exchange,提问作者Athiya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 10:12:12