如何在ADF中合并JSON文件并导入Azure Data Explorer对应表?
实现方法
针对你的需求,无需单独找“合并”功能,通过以下两种方式即可实现将A/B/C文件夹下的所有JSON文件合并导入对应Azure Data Explorer(ADX)表:
方式一:Azure Data Factory(ADF)实现
1. 配置源数据集
分别为A、B、C三个根文件夹创建存储数据集(如Blob存储数据集):
- 设置数据集根路径为
/UserData/data/json/A/(B、C文件夹同理) - 勾选递归遍历子文件夹,确保能读取所有层级子目录下的JSON文件
- 文件格式选JSON,根据实际结构设置:若每个JSON是单条记录,选
Single document per file;若是多条记录的数组,选Array of documents
2. 配置复制活动
创建三个复制活动(分别对应A→A表、B→B表、C→C表):
- 源端:选择对应文件夹的数据集,确认默认读取所有
.json文件的规则生效 - 目标端:选择ADX数据集,指定对应的目标表
- 映射:手动匹配源JSON的
name、timestamp、value字段到目标表列,或启用自动映射
ADF复制活动会自动将源端读取到的所有文件数据合并为一个数据流,批量写入ADX目标表,无需额外合并操作。
方式二:直接使用ADX原生Ingestion命令
通过ADX的Kusto命令直接从存储批量导入数据,支持递归读取子文件夹:
导入A文件夹数据到A表
.ingest into table A ( h@'https://<你的存储账户>.blob.core.windows.net/<容器名>/UserData/data/json/A/**/*.json' ) with ( format = 'json', ingestionMapping = '[{"column":"name","path":"$.name"},{"column":"timestamp","path":"$.timestamp"},{"column":"value","path":"$.value"}]' )
同理处理B、C文件夹
将命令中的A替换为B或C,修改对应的存储路径和目标表名即可。
说明:命令中的
**表示递归遍历所有子文件夹,会自动合并所有匹配的JSON文件数据导入目标表。
内容的提问来源于stack exchange,提问作者MMV
相关产品推荐
相关产品推荐

