ADF复制活动导入JSON源架构报Bad Request错误问题咨询
ADF Copy Activity 针对JSON源的Schema导入规则与配置说明
JSON源下Import schema的工作机制
- 触发导入操作时,服务不会拉取全量源数据,仅会对源端返回结果做小批量采样:REST API类源默认取首次请求返回的前若干条结果做结构解析,不会遍历全量数据集。
- 解析过程默认从JSON根节点开始逐层识别字段:如果返回结构存在嵌套数组(比如Business Central OData接口返回的业务数据全在根节点下的
value数组中),只有显式配置集合引用路径后,解析逻辑才会下钻到对应数组内,提取数组对象下的字段、推断字段类型生成源侧schema。 - 汇(Sink)侧的schema列表不会从源数据推导,是直接拉取目标存储(本次场景为Azure SQL Database)对应目标表的元数据生成。
- 导入后仅识别到
@odata.context字段的问题,本质是配置时没有提前指定数组展开路径,解析逻辑只识别了根节点下的平级元数据字段,没有下钻到value数组读取实际业务字段,才会出现源侧可映射字段和目标表字段完全不匹配的情况。
是否必须手动导入schema
不存在强制要求,根据源数据结构判断即可:
- 如果源JSON是无嵌套的平级结构、字段名和目标表字段完全一致、不需要做字段过滤/类型转换,可以不手动导入schema,直接开启自动映射即可正常运行。
- 出现以下任意一种场景时,必须通过导入schema或手动配置的方式明确映射规则,否则会出现执行报错:
- 源JSON存在嵌套结构、数组类型字段,需要指定路径展开数组
- 源字段名和目标表字段名不一致,需要做字段重命名映射
- 源字段数据类型和目标表字段类型不匹配,需要做显式类型转换
- 需要筛选部分字段同步,丢弃不需要的源字段
当前Bad Request报错的修复方法
手动填写字段覆盖配置后仍报400 Bad Request,核心原因是仅在mapping页将value标记为数组类型,但没有在源配置页显式指定value为集合引用路径,任务执行时的实际解析逻辑和手动配置的映射规则不匹配,直接触发校验失败。
按以下步骤调整即可:
- 进入Copy Activity的「源」配置页,找到JSON解析相关配置项,在「集合引用路径」栏填入
value - 切回「映射」选项卡,重新点击Import schema,此时源侧会自动识别
value数组下的所有业务字段,不会再将根节点的元数据字段列为待映射项 - 确认自动识别出的源字段和Azure SQL目标表字段一一对应,不需要手动硬编码字段名,直接匹配字段映射即可
- 重新启动Debug运行即可正常执行
内容的提问来源于stack exchange,提问作者Quynh-Mai Chu
相关产品推荐
相关产品推荐

