如何在Azure Data Factory中动态获取指定文件
在Azure Data Factory动态获取指定日期文件夹下的特定前缀文件
核心思路
借助ADF的动态内容、参数/变量,结合日期函数生成对应文件夹路径和文件名,精准定位目标文件。
具体操作步骤
1. 设置日期参数(或变量)
创建一个String类型的参数(比如命名为pTargetDate),格式设为yyyy/MM/dd,用来指定要获取的日期对应的文件夹路径。如果需要自动取当前日期或前一天,直接用动态表达式生成即可:
- 取当前日期:
@formatDateTime(utcNow(), 'yyyy/MM/dd') - 取前一天日期:
@formatDateTime(addDays(utcNow(), -1), 'yyyy/MM/dd')
2. 拼接目标文件完整路径
在Blob存储数据集的文件路径和文件名中使用动态表达式,组合出目标文件的位置:
- 文件夹路径:直接引用参数或动态日期表达式,例如
@pTargetDate - 文件名:将前缀与日期字符串拼接成
jio_India_yyyyMMdd.csv格式,对应的表达式:
逻辑是用@concat('jio_India_', replace(pipeline().parameters.pTargetDate, '/', ''), '.csv')replace去掉日期路径里的斜杠,转换成yyyyMMdd格式,再和前缀、后缀拼接。
3. 配置数据集与活动
- 在Blob数据集的连接设置中,把文件路径和文件名设置为上述动态表达式。
- 在复制活动(或其他读取文件的活动)中选择这个数据集,运行时会自动根据指定日期定位到对应文件夹和文件。
4. 测试验证
- 手动将参数
pTargetDate设为2022/01/01,检查是否能正确读取2022/01/01/jio_India_20220101.csv - 将参数改为
2022/01/02,验证是否读取2022/01/02/jio_India_20220102.csv
可选优化
如果需要每日自动执行,在管道的触发器中设置每日触发规则,同时将参数默认值设为@formatDateTime(utcNow(), 'yyyy/MM/dd')(或前一天的表达式),实现无需手动干预的每日自动获取。
内容的提问来源于stack exchange,提问作者user21510438
相关产品推荐
相关产品推荐

