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

在Azure Data Factory中为API URL动态传ID并添加Action ID列至SQL

在Azure Data Factory中为API返回结果添加Action ID列

问题场景

已在Power BI中实现以下逻辑:先调用https://something.com/actions获取ActionID,再将每个ActionID动态传入https://something.com/actions/{id}/analysis-code-values的API URL,获取对应数据并添加Action ID列。现在需要在Azure Data Factory中通过Copy Data Activity复刻该逻辑,将数据写入Azure SQL Database。目前已配置Linked Service和For Each Activity,可成功传递ActionID,但无法将Action ID添加到结果表中,期望输出表包含Action ID、id、lastmodified、analysiscodeid列。

解决方案

方法1:直接在Copy Data Activity的映射中添加自定义列

这是最直接的实现方式,无需额外组件:

  • 打开For Each Activity内部的Copy Data Activity,切换到映射标签页
  • 点击「添加」→「添加自定义列」
  • 自定义列名设置为Action ID,在表达式框中输入循环变量的引用,比如@item().ActionID(请根据你实际定义的循环变量名调整,比如变量是actionId就写@item().actionId)
  • 确认API返回的id、lastmodified、analysiscodeid列已正确映射到目标SQL表的对应列
  • 运行流水线后,目标表将自动包含Action ID列

方法2:用Data Flow实现更灵活的转换(适合复杂场景)

如果API返回结构复杂,或需要额外数据清洗,可改用Data Flow:

  1. 在For Each Activity内部添加Data Flow Activity
  2. 给Data Flow定义一个参数(比如p_ActionID),用于接收For Each传递的ActionID
  3. 在Data Flow中:
    • 添加Source组件,配置REST API源,将URL设置为动态表达式:@concat('https://something.com/actions/', pipeline().parameters.p_ActionID, '/analysis-code-values')
    • 添加Derived Column组件,新增列Action ID,赋值为参数$p_ActionID
    • 添加Sink组件连接到Azure SQL Database,完成所有列的映射
  4. 在Data Flow Activity的参数配置中,将p_ActionID的值设为@item().ActionID(对应你的循环变量)

注意事项

  • 确保Action ID的类型与目标SQL表中对应列的类型匹配(比如字符串、整数),必要时用ADF表达式转换类型,比如@string(item().ActionID)
  • 若API返回的是数组格式,需在REST源的设置中启用「数组根」配置,确保数据能正确被读取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 01:22:38