Azure Data Factory中REST API请求体paginationStartIndex循环递增方案咨询
在Azure Data Factory中实现POST请求体分页获取REST API数据
针对你遇到的POST请求体中paginationStartIndex分页需求,ADF自带的URL分页规则不适用,可通过变量+Until循环+Web/复制活动组合实现,具体步骤如下:
1. 创建流水线变量
先在流水线中创建3个变量:
totalRecords:整数类型,存储API返回的总记录数,初始值设为0currentStartIndex:整数类型,存储当前请求的起始索引,初始值设为1pageSize:整数类型,对应请求体里的numberOfRecords,设为20
2. 获取总记录数
添加一个Web活动,配置POST请求获取第一页数据并提取总条数:
- 配置URL、请求方法为POST,请求体使用初始JSON:
{ "anyStateChange": true, "timeInterval": { "field": "requestedOn", "operator": "lastndays", "value": "1" }, "paginationStartIndex": 1, "numberOfRecords": 20 }
- 执行完Web活动后,添加Set Variable活动,将
totalRecords赋值为:@activity('Web活动名称').output.totalResults
3. 配置Until循环实现分页遍历
添加Until活动,设置循环终止条件为:@greater(variables('currentStartIndex'), variables('totalRecords'))
在Until循环内部依次添加以下活动:
3.1 执行当前页数据复制
添加复制活动:
- 源数据集选择REST API类型,配置POST请求,请求体使用动态内容替换
paginationStartIndex:
{ "anyStateChange": true, "timeInterval": { "field": "requestedOn", "operator": "lastndays", "value": "1" }, "paginationStartIndex": @variables('currentStartIndex'), "numberOfRecords": @variables('pageSize') }
- 目标数据集根据你的存储类型配置(如Blob存储、Azure SQL等),确保数据以追加方式写入。
3.2 递增起始索引
添加Set Variable活动,将currentStartIndex递增一页的条数:@add(variables('currentStartIndex'), variables('pageSize'))
4. 验证逻辑
运行流水线后,Until循环会自动递增paginationStartIndex,直到currentStartIndex超过总记录数时停止,确保所有数据都被复制。
内容的提问来源于stack exchange,提问作者Wolfenstyne
相关产品推荐
相关产品推荐

