如何在Azure Data Factory中筛选GetMetaData返回的前30个最新文件?
ADF筛选Data Lake Gen2最新30个文件的实现步骤
1. 配置Get Metadata活动获取文件列表
- 新增Get Metadata活动,数据源选择你的Data Lake Storage Gen2账户,指定目标文件夹路径
- 在活动的「字段」设置中勾选
子项(Child Items),这样就能获取文件夹下所有文件的元数据集合
2. (可选)用Filter活动过滤目标格式文件
- 新增Filter活动,输入值选择
@activity('Get Metadata活动名称').output.childItems - 筛选条件设置为
@contains(item().name, 'productx_'),确保只保留符合命名格式的文件
3. 用Sort活动按文件名降序排序
- 新增Sort活动,输入值选择Filter活动的输出(若跳过Filter则直接用Get Metadata的输出)
- 排序字段设为
@item().name,排序顺序选择降序(Descending)——因为你的文件名日期是YYYYMMDDTHHMMSS格式,字符串降序逻辑和日期从新到旧完全一致
4. 用Slice活动截取前30个文件
- 新增Slice活动,输入值选择Sort活动的输出
- 设置起始索引为
0,结束索引为30(ADF的Slice是左闭右开区间,0到30正好截取前30条数据,即最新的30个文件)
流程示意图(文字版)
Get Metadata → [Filter(可选)] → Sort → Slice ↓ ↓ ↓ ↓ 获取全部文件 → 筛选目标格式 → 按文件名降序 → 保留前30个
核心表达式汇总
- 获取文件列表:
@activity('Get Metadata').output.childItems - 格式筛选逻辑:
@contains(item().name, 'productx_') - 排序字段:
@item().name - Slice参数:起始
0,结束30
内容的提问来源于stack exchange,提问作者Kinggpuu
相关产品推荐
相关产品推荐

