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

如何在Azure Data Factory中将分页API结果合并为单个CSV文件

Azure Data Factory处理分页API并合并导出为单个CSV的最优方案

前置确认

先明确API的分页规则:

  • 分页参数:确认是PageIndex/PageSize还是offset/limit,以及初始页码(从0还是1开始)
  • 响应字段:确认TotalCount(总条目数)、Data(当前页数据数组)的字段名是否和描述一致

核心实现步骤

1. 初始化管道变量

在ADF管道中创建以下变量:

  • currentPageIndex:整数类型,初始值设为API的起始页码(比如0或1)
  • totalPages:整数类型,初始值0,后续用于存储总页数

2. 获取总页数并计算循环次数

  • 添加Web活动:调用API的第一页(比如PageIndex=0,PageSize设为你期望的分块大小,比如10),获取包含TotalCount和PageSize的响应。
  • 添加Set Variable活动:计算总页数,表达式示例:
    @ceil(div(int(activity('Get_First_Page').output.TotalCount), int(activity('Get_First_Page').output.PageSize)))
    
    (注:如果API返回的PageSize是固定值,也可以直接写死数值,比如div(int(activity('Get_First_Page').output.TotalCount), 10))

3. 循环拉取所有分页数据

添加Until活动,设置终止条件为:

@equals(variables('currentPageIndex'), variables('totalPages'))

在Until活动内部依次添加以下组件:

  • Web活动:调用当前页的API,请求参数中传入PageIndex=@{variables('currentPageIndex')}和固定的PageSize。
  • Copy活动:将当前页的Data数据写入临时存储(比如Azure Blob Storage的临时容器)
    • 源:选择“Web活动输出”,设置路径为$.Data(指定取响应中的Data数组)
    • 接收器:选择Blob Storage,文件名设为temp_page_@{variables('currentPageIndex')}.csv(确保每个页的文件唯一)
  • Increment Variable活动:将currentPageIndex的值加1,进入下一轮循环

4. 合并临时文件为单个CSV

循环结束后,添加Copy活动:

  • 源:选择临时存储容器,文件路径填写temp_page_*.csv,勾选“递归”和合并文件选项(在源的“高级设置”里),配置CSV的分隔符、标题行等规则。
  • 接收器:选择目标存储(比如Blob/ADLS),设置最终文件名(如release_packages.csv),确保接收器的“复制行为”设为“合并文件”。

5. 清理临时文件(可选)

添加Delete活动,选择临时存储容器,文件路径填写temp_page_*.csv,删除所有临时分块文件,避免存储冗余。


关键注意事项

  • 限流处理:如果API有调用频率限制,在Until活动的Web活动后添加Wait活动,设置等待时长(比如1秒),避免触发API限流。
  • Schema一致性:确保所有分页返回的Data字段结构一致,可在Copy活动中导入源schema,避免字段类型不匹配或缺失。
  • 异常处理:给Web活动和Copy活动添加失败时的重试策略,应对API临时不可用的情况。
  • 变量类型校验:计算总页数时,确保TotalCount和PageSize转成整数类型,避免表达式计算错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 00:22:19