Azure Synapse中REST API取数分页导致JSON结构不符合预期
解决Azure Synapse Copy Data活动从SAP SuccessFactors取数的分页合并问题
问题分析
你遇到的核心矛盾是:用['d']['__next']能拉全量但结果是多个JSON拼接,用官方的$['d']['__next']/$.d.__next却只能取前1000行。本质是Copy Data活动对分页路径的解析逻辑差异,以及默认结果拼接方式没做数组合并。下面是不用foreach循环的直接解决方案:
方案1:设置JSON根路径+保留['d']['__next']分页规则
这是最直接的解决方法,让系统自动提取并合并每个分页的results数组:
- 打开你的SAP SuccessFactors REST源数据集,找到JSON格式设置
- 设置
Root path为$['d']['results'],这个配置会告诉Copy Data活动:只把每个分页返回的d.results数组里的元素作为数据行,而非保留整个JSON结构 - 保持分页规则为
['d']['__next'],确保能正确触发后续分页请求 - 运行Copy Data活动,此时所有分页的
results元素会自动合并成一个完整的数据集,不再是多个JSON拼接
方案2:修复官方分页路径的解析问题
如果必须用官方推荐的$开头的分页路径,可能是SAP返回的__next格式有特殊处理需求:
- 检查SAP返回的
__next值是否是完整URL,如果是相对路径,需要在分页设置里补全Base URL:- 分页规则选择
Custom - 分页Token来源填
@activity('Copy Data').output.response.d.__next - 下一页请求URL用表达式拼接:
@concat('https://你的SAP SuccessFactors API域名/', activity('Copy Data').output.response.d.__next)
- 分页规则选择
- 同时同样设置JSON根路径为
$['d']['results'],确保数据合并
方案3:调整Copy Data活动的输出设置
如果上述方法仍有问题,检查活动的输出数据集配置:
- 确保输出数据集的格式设置里,选择
Array of objects作为JSON结构,而非Single object - 若输出到ADLS等存储,设置
File pattern为Single file,避免生成多个文件,同时自动合并所有分页数据
验证步骤
- 先在源数据集里做数据预览,确认单页数据能正确提取
results里的元素 - 运行一次Copy Data活动,查看输出的数据集,确认是合并后的完整数组,而非多个JSON拼接
内容的提问来源于stack exchange,提问作者Valouf
相关产品推荐
相关产品推荐

