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

Azure ADF V2如何将数组管道参数传递给调用Snowflake存储过程的Azure Function

ADF V2传递数组参数到Azure Function调用Snowflake存储过程解决方案

首先明确:ADF V2的Azure Function活动不存在无法传递数组类型参数的固有功能限制,你遇到的问题属于参数传递配置错误导致,可按以下步骤完成适配:

前置配置校验

  • 确认使用HTTP触发类型的Azure Function,已开启POST请求支持,函数逻辑支持接收JSON数组格式的请求参数
  • 确认ADF管道的数组参数配置正确:参数类型选择「Array」,示例值可按业务格式设置为[{"table_name":"user_info","schema":"dbo","exec_sql":"xxx"}],可直接匹配你需要传递的表清单、执行语句等结构化信息

ADF Azure Function活动配置步骤

  • 活动请求方法选择POST
  • 直接在「请求正文(Request Body)」中引用数组参数即可,ADF会自动将数组序列化为标准JSON格式传递到函数侧,无需额外转义:
    • 若需要直接传递整组数组,正文直接填写表达式:@pipeline().parameters.你的数组参数名称
    • 若需要同时传递其他非数组参数,可构造自定义JSON结构,注意数组参数引用外层不要加引号,示例如下:
      {
          "table_config_list": @pipeline().parameters.你的数组参数名称,
          "run_id": @pipeline().RunId,
          "env": "prod"
      }
      

Azure Function侧接收参考(C#示例)

直接反序列化请求体即可拿到结构化数组,后续再调用Snowflake存储过程即可:

#r "Newtonsoft.Json"
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    // 反序列化得到表配置数组
    List<TableConfig> configList = JsonConvert.DeserializeObject<List<TableConfig>>(requestBody);
    
    // 此处插入调用Snowflake存储过程的业务逻辑
    return new OkObjectResult($"共接收{configList.Count}张表的处理请求");
}

// 定义和数组结构匹配的实体类
public class TableConfig
{
    public string table_name { get; set; }
    public string schema { get; set; }
    public string exec_sql { get; set; }
}

常见问题排查

  • 函数收到字符串格式的数组而非结构化数组:检查ADF请求正文中引用数组参数时,外层是否多加了引号,去掉引号即可
  • 函数收到空参数:检查ADF参数名称引用拼写是否正确,管道参数类型是否确实设置为Array而非String
  • 函数返回400错误:检查请求的JSON结构是否符合函数接收要求,无语法错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 00:45:04