You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 09:10:34