如何在ADX中合并ADLS不同子文件夹下的Parquet文件
在ADX中合并多子文件夹Parquet文件到单个外部表的方法
核心思路
利用ADX外部表的通配符路径匹配或多路径显式指定功能,批量读取目标子文件夹下的Parquet文件,自动合并为单个逻辑表。
方案一:通配符匹配批量子文件夹
如果子文件夹命名有规律(如applev1、bananav2这类项目+版本格式),用通配符*匹配folder4下的所有目标子文件夹,自动加载所有子文件夹内的Parquet文件。
创建外部表的示例代码:
.create external table CombinedParquetTable ( Column1: string, Column2: int, Column3: datetime ) kind=storage partition by (ProjectName: string) pathformat = (ProjectName) dataformat=parquet ( h@'abfss://storage_name@container_name.dfs.core.windows.net/UserData/folder1/folder2/folder3/folder4/*/' ) with ( folder = "ExternalTables", docstring = "合并folder4下所有子文件夹的Parquet数据" )
- 若需要更精准的匹配(比如只识别以字母开头、后跟
v+数字的文件夹),可替换通配符为[a-z]*v[0-9]/ - 配置
partition by和pathformat后,还能通过ProjectName列区分不同子文件夹的数据来源
方案二:显式指定固定子文件夹路径
如果目标子文件夹数量固定、名称明确,直接在存储路径列表中逐个列出:
.create external table CombinedParquetTable ( Column1: string, Column2: int, Column3: datetime ) kind=storage dataformat=parquet ( h@'abfss://storage_name@container_name.dfs.core.windows.net/UserData/folder1/folder2/folder3/folder4/applev1/', h@'abfss://storage_name@container_name.dfs.core.windows.net/UserData/folder1/folder2/folder3/folder4/bananav2/' ) with ( folder = "ExternalTables", docstring = "合并指定子文件夹的Parquet数据" )
- 后续新增子文件夹时,用
.alter external table命令追加新路径即可,示例:
.alter external table CombinedParquetTable ( h@'abfss://storage_name@container_name.dfs.core.windows.net/UserData/folder1/folder2/folder3/folder4/orangev3/' )
验证合并结果
创建完成后,执行以下查询确认数据是否合并成功:
-- 查看前10条数据 CombinedParquetTable | take 10 -- 按子文件夹统计数据量(方案一适用) CombinedParquetTable | summarize RecordCount = count() by ProjectName
内容的提问来源于stack exchange,提问作者MMV
相关产品推荐
相关产品推荐

