如何在ADF中通过Get Metadata活动获取未知文件名的文件
在ADF中获取Gen2数据湖ODS层未知文件名的.snappy.parquet文件
问题描述
我的Gen2数据湖ODS层中有一个从源转换为Parquet格式的文件,每次加载到ODS层时文件名都会变化。我希望在ADF中获取该.snappy.parquet文件,无论其文件名是什么。当前我配置的数据集指定了固定文件名,原本尝试用Get Metadata活动直接获取该文件,但配置无效,提示找不到文件。该文件夹中始终只有一个以.snappy.parquet结尾的文件,且字段列表必须设置为“size”(后续管道步骤需要用它做比较),请问该如何实现?
解决方案
1. 修改数据集配置
- 打开目标数据集,将文件名字段改为通配符模式:
*.snappy.parquet,这样数据集就能自动匹配文件夹内所有符合后缀的文件(因文件夹仅存一个目标文件,所以只会匹配到所需文件)。 - 确认数据集的文件路径正确指向ODS层的目标文件夹。
2. 调整Get Metadata活动
- 在Get Metadata活动中选择修改后的数据集。
- 字段列表保持勾选
size,同时额外勾选childItems,这样活动会返回文件夹下匹配到的文件列表。 - 活动执行后,可通过以下表达式提取所需信息:
- 获取文件名:
@activity('你的Get Metadata活动名称').output.childItems[0].name - 获取文件大小:
@activity('你的Get Metadata活动名称').output.childItems[0].size(满足后续步骤的大小比较需求)
- 获取文件名:
3. 后续步骤引用文件信息
如果后续管道步骤(如Copy Data活动)需要使用该文件,可在对应的数据集配置中,通过动态内容引用上述提取的文件名,示例:@activity('你的Get Metadata活动名称').output.childItems[0].name
内容的提问来源于stack exchange,提问作者Terri Lowe
相关产品推荐
相关产品推荐

