ADF中仅指定根目录时如何通过Get Metadata获取Parquet文件结构
ADF动态Parquet文件列名获取可行解决思路
- 先获取动态文件名再调用Get Metadata
首先配置Get Metadata活动指向根文件夹,勾选返回Child Items字段拿到文件夹下所有文件/子文件夹列表;接着用Filter活动按命名规则过滤出目标Parquet文件,排除无关内容;如果所有Parquet文件结构一致,直接取过滤结果的第一个文件名传入配置了动态文件名参数的Parquet数据集关联的Get Metadata活动,即可获取Structure字段拿到完整列名;如果需要校验所有文件结构,可套ForEach循环遍历所有文件逐个读取。 - 用Lookup活动快速读取列名
同样先拿到过滤后的Parquet文件列表,取第一个文件路径传入Lookup活动对应的Parquet数据集,打开Lookup的仅返回第一行开关,执行后返回结果的字段名就是该Parquet文件的列名,不需要额外解析结构字段,适合小文件场景,执行效率更高。 - Mapping Data Flow批量处理多文件
在数据流中配置Parquet源,路径设置为根文件夹,开启允许通配符路径,填入*.parquet匹配所有目标文件;在源的投影设置中可直接获取所有匹配文件的合并列结构,还支持自动校验多文件结构一致性,出现结构差异可直接输出异常标记,后续可直接将列名输出到下游存储或管道活动,无需额外循环逻辑。 - 自定义活动实现灵活解析
若有特殊的文件过滤、结构合并需求,可使用Azure Function自定义活动,传入根文件夹路径,在函数代码中通过pyarrow、fastparquet等库直接读取Parquet文件元数据提取列名,处理完成后将结果返回给ADF管道即可,灵活度最高,可适配复杂业务场景。
内容的提问来源于stack exchange,提问作者cjay
相关产品推荐
相关产品推荐

