Azure ADF数据流排除指定对象后输出JSON结构异常的解决方法咨询
Azure ADF 数据流提取指定JSON结构的替代方案
针对你需要排除record和contractNumbers对象、仅保留{"report":{"metadata":{...}}}结构的需求,以下是几种可行的解决方法:
1. 使用Select转换直接投影目标字段
Select转换是处理字段筛选最直接的工具:
- 在数据流中添加Select转换并连接数据源
- 进入映射配置界面,删除所有默认映射,手动添加新映射:
- 源路径选择
record.report - 输出字段名设为
report
- 源路径选择
- 保存配置后,输出将直接生成预期的JSON结构,自动剔除无关对象
2. Derived Column + Select 组合使用
如果之前用Derived Column只添加了report字段但未移除原有字段,需要配合Select完成最终筛选:
- 在Derived Column转换中,添加表达式:
report = record.report,生成包含目标结构的新字段 - 紧接着添加Select转换,仅保留
report字段,删除所有其他字段映射 - 这样输出就只会包含你需要的
report对象
3. 使用Parse转换解析后提取
若原始JSON是以字符串形式存储的,可先解析再提取:
- 添加Parse转换,将原始JSON字符串字段解析为结构化对象(指定输出类型为
Document) - 后续用Derived Column提取
record.report到report字段,再通过Select保留该字段
4. 管道级使用Lookup + JSON函数预处理
如果处理的是存储中的JSON文件,也可以在管道层面完成提取:
- 添加Lookup活动,读取目标JSON文件的内容
- 用表达式
@activity('Lookup').output.value[0].Content.record.report直接提取所需结构 - 将提取结果通过Copy活动写入目标存储
补充说明
你之前尝试的Filter转换是用于过滤行数据的,无法实现字段级的排除;而单独使用Derived Column只会新增字段,不会移除原有字段,因此需要配合Select转换完成最终的字段筛选。
内容的提问来源于stack exchange,提问作者thichxai
相关产品推荐
相关产品推荐

