如何通过Azure Data Factory原生活动获取数据湖最新子文件夹路径?
仅用ADF基础活动获取Blob Storage最新文件夹路径方案
核心思路
利用ADF的Get Metadata、Set Variable、Filter、Sort等基础活动,基于你按year/month/day/hour/min/sec命名的时间序列文件夹结构,通过提取路径中的时间字符串并排序,直接筛选出最新路径。
具体步骤
1. 配置目标数据集
创建Blob Storage数据集,指向父目录 datasetname/fullload,开启递归选项,确保能获取所有层级的子文件夹。
2. 获取所有子项信息
添加Get Metadata活动,关联上述数据集,勾选Child Items选项,获取该目录下所有子项的路径与类型。
3. 筛选最终data文件夹路径
添加Filter活动,输入源为Get Metadata输出的childItems,设置筛选条件:
@equals(item().type, 'Folder') and endsWith(item().name, '/data')
(若ADF返回的路径不带末尾斜杠,调整为endsWith(item().name, 'data'))
4. 按时间维度排序路径
添加Sort活动,输入源为Filter的输出结果,排序规则选择自定义表达式:
@replace(replace(item().name, 'datasetname/fullload/', ''), '/data', '')
该表达式会将路径转换为year/month/day/hour/min/sec格式的字符串,设置排序方式为降序,排序后第一个结果即为最新时间对应的路径。
5. 存储最新路径到变量
添加Set Variable活动,创建字符串类型变量(如LatestFolderPath),变量值设置为:
@first(body('Sort')).name
若返回的是相对路径,可拼接父目录补全:
@concat('datasetname/fullload/', first(body('Sort')).name)
补充说明
- 只要year/month等层级为数字格式,字符串排序结果与时间顺序完全一致,可直接使用;
- 若文件夹层级有变动,只需调整
Sort活动中的路径替换表达式即可适配。
内容的提问来源于stack exchange,提问作者Do Chi Bao
相关产品推荐
相关产品推荐

