You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在ADF Data Flow中实现REST API动态分页批量导入数据?

在ADF Data Flow中实现REST API的Range式分页批量导入

针对你需要用Data Flow扁平化REST API数据并批量导入Azure SQL Server的需求,以下是实现$top/$skip动态分页的具体步骤:

1. 定义Data Flow分页参数

在Data Flow中创建两个整数类型参数:

  • pageSize:设置每页加载的记录数(比如你需求中的400)
  • currentSkip:控制每次请求需要跳过的记录数,初始值设为0

2. 配置REST源的动态请求参数

在REST数据源的Query Parameters面板中,添加以下参数:

  • $expand:填入你需要展开的字段(如xx,yy,zz)
  • $top:使用表达式引用参数 $pageSize
  • $skip:使用表达式引用参数 $currentSkip

这样每次运行Data Flow时,会自动生成类似abc?$expand=xx,yy,zz&$top=400&$skip=0的请求URL,实现分页查询。

3. 用ADF管道实现分页循环

Data Flow单次仅处理单页数据,需要结合管道的循环逻辑完成批量导入:

  • 步骤3.1:获取总记录数
    添加一个Web活动,调用API获取总记录数(OData API可通过追加$count=true实现,从返回结果中提取@odata.count值存入管道变量totalRecords)
  • 步骤3.2:计算总页数
    用表达式计算总页数(向上取整):div(add(variables('totalRecords'), variables('pageSize')-1), variables('pageSize'))
  • 步骤3.3:循环调用Data Flow
    添加ForEach活动,循环范围基于总页数,在循环体内:
    1. 调用Data Flow,传入pageSize和currentSkip参数
    2. 更新currentSkip变量:setVariable('currentSkip', add(variables('currentSkip'), variables('pageSize')))

如果API不支持返回总记录数,可改用Until活动循环:每次调用Data Flow后判断返回行数是否为0,为空则停止循环。

4. 在Data Flow中扁平化数据

通过Flatten转换处理嵌套结构:

  • 选择需要展开的嵌套数组字段(比如示例中的Trips)
  • 设置展开模式为Array,映射嵌套字段到扁平列,确保与目标SQL表结构匹配

5. 配置Azure SQL Sink

在Sink转换中选择Azure SQL数据集:

  • 设置写入方式为Append,保证每次分页数据追加到目标表
  • 完成字段映射,确保扁平化后的列与SQL表列一一对应

注意事项

  • 确认REST API支持$top和$skip参数,若API使用其他参数名(如limit/offset),需同步调整Query Parameters配置
  • 若API有速率限制,可在循环中添加Wait活动控制请求频率

内容的提问来源于stack exchange,提问作者David Kade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 16:10:20