Azure Data Factory:REST API分页全量数据拉取至Blob存储配置求助
Azure Data Factory 拉取REST API全量分页数据配置方案
核心问题解答
需要使用ForEach Activity实现全量数据拉取,因为API返回的分页需要遍历所有页码,逐个拉取后将数据追加到同一个Blob文件中。
详细配置步骤
1. 新增Lookup Activity获取总页数
- 创建一个Lookup Activity,命名为
Lookup_Get_Page_Count。 - 源配置:选择你的REST API数据集,在API查询参数中固定传入
page_number=1,拉取第一页数据。 - 该Activity的输出会包含API返回的
meta.page_count(总页数),后续用表达式提取:@activity('Lookup_Get_Page_Count').output.firstRow.meta.page_count
2. 新增Set Variable Activity生成页码数组
- 创建一个数组类型的变量
var_page_numbers。 - 添加Set Variable Activity,将变量值设置为:
(注:@range(1, add(int(activity('Lookup_Get_Page_Count').output.firstRow.meta.page_count), 1))range函数是左闭右开,所以要给总页数加1,才能生成从1到总页数的完整数组)
3. 配置ForEach Activity遍历页码
- 添加ForEach Activity,将
Items设置为@variables('var_page_numbers')。 - 勾选Sequential选项(如果API有请求频率限制,避免并发请求触发限流)。
4. 在ForEach内部配置Copy Activity(拉取单页并追加)
- 在ForEach容器内添加你的Copy Activity:
- 源配置:REST API数据集,将查询参数中的
page_number值设置为@item()(动态引用当前遍历的页码)。 - 映射配置:保持和你现有单页拉取的映射规则一致。
- 目标配置:Blob存储数据集,在Sink设置中选择Append写入模式,确保每一页数据追加到同一个文件,而非覆盖。
- 源配置:REST API数据集,将查询参数中的
注意事项
- 如果API有请求速率限制,可在Copy Activity的Retry设置中添加重试策略,避免请求失败。
- 测试阶段可临时修改页码数组为
@range(1,3),验证分页拉取和追加逻辑是否正常。 - 确保REST API数据集的JSON格式解析正确,Lookup Activity能正常提取
meta.page_count值。
内容的提问来源于stack exchange,提问作者jklein
相关产品推荐
相关产品推荐

