Azure Data Factory仅复制JSON中metadata节点至Blob存储的问题
Azure Data Factory 实现匹配条件后仅复制JSON的metadata节点到Blob存储
要实现满足匹配条件时仅复制JSON中的metadata节点,无法直接通过复制活动完成,需借助**数据流(Data Flow)**做数据筛选与转换,具体操作步骤如下:
1. 创建源数据集
配置指向源Blob存储的JSON数据集,关键设置:
- 文档类型选择
Single document(适配多单文件JSON的场景) - 路径指向存放源JSON的容器或指定文件夹
2. 构建处理数据流
2.1 添加源转换
关联刚创建的源数据集,ADF会自动解析JSON结构,若未识别可手动导入Schema
2.2 添加筛选转换
设置匹配条件,仅保留符合要求的文件。比如示例中要匹配distribution.code = "A",表达式写:
record.metadata.markings.document.distribution.code == 'A'
2.3 添加派生列转换
新建派生列(名称可设为output),用表达式提取并包装metadata节点:
{metadata: record.metadata}
这一步确保输出是合法可解析的JSON对象,仅包含目标节点内容
2.4 添加接收器转换
配置指向目标Blob存储的JSON数据集:
- 文档类型选择
Single document - 接收器设置中勾选**"写入单个文件"**,可通过参数自定义文件名(比如保留原文件名后缀,如
@concat(item().name, '_metadata.json'),需配合管道参数传递源文件名) - JSON格式设置:根路径设为
$,保证输出内容为完整的metadata节点结构
3. 搭建执行管道
- 管道中添加数据流活动,关联上述构建的数据流
- 若需批量处理多文件,可搭配Get Metadata活动获取文件列表,再用For Each活动遍历每个文件,将文件名作为参数传递给数据流的源/接收器数据集
示例输出验证
以你提供的JSON为例,处理后目标Blob中生成的文件内容为:
{ "metadata": { "an": "file6.json", "markings": { "document": { "distribution": { "code": "A" } } }, "publicationDate": { "date": "2022-11-25" } } }
内容的提问来源于stack exchange,提问作者thichxai
相关产品推荐
相关产品推荐

