如何在ADF复制数据活动中将年份参数写入SQL接收器?
解决ADF中遍历REST API年份参数并写入SQL的问题
1. 配置REST源的范围分页(遍历年份)
- 打开复制数据活动的源选项卡,选择REST连接器
- 在「分页」设置里,选择范围类型
- 填入分页参数:
- 起始值:输入需要遍历的起始年份(如
2020) - 结束值:输入需要遍历的结束年份(如
2024) - 步长:设为
1(保证每年递增一次)
- 起始值:输入需要遍历的起始年份(如
- 绑定年份参数到API请求:
- 若API用查询参数传年份:在「相对URL」中写
/holidays?year=@pipeline().parameters.paginationRangeValue(根据实际API路径调整) - 若API用请求头传年份:在「请求头」添加键值对,键为
year,值填@pipeline().parameters.paginationRangeValue
- 若API用查询参数传年份:在「相对URL」中写
2. 动态添加年份附加列
- 切换到复制数据活动的映射选项卡
- 点击「添加附加列」,列名设为
year(和SQL目标表的对应列名一致) - 在「值」的输入框中,绑定当前分页的年份值:
@pipeline().parameters.paginationRangeValue - 确认SQL接收器的目标表已存在
year列,且映射列表中附加列和SQL列已正确关联
3. 适配API返回的数组结构
从你提供的API输出看,dates是数组类型,需根据需求处理:
- 若要将每个日期拆分为单独行:需要在复制活动前引入数据流,用「展开」转换把
dates数组拆成多行,再添加年份列后写入SQL - 若直接存储数组:确保SQL列类型支持(比如SQL Server的
NVARCHAR(MAX)或JSON类型)
排查要点
- 附加列失效时,先检查
@pipeline().parameters.paginationRangeValue是否能正确获取当前年份(可通过调试时的监控日志查看参数值) - 确认API接受的年份格式(数字/字符串)和你传递的参数类型一致
- 检查SQL映射关系,确保附加列的字段名、数据类型和目标表完全匹配
内容的提问来源于stack exchange,提问作者A. Stam
相关产品推荐
相关产品推荐

