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

如何在ADF脚本活动中传递Lookup多值调用Snowflake存储过程

解决方案

1. 确认Lookup活动的输出结构

Lookup活动的输出格式通常如下(假设查询返回CustomerName列):

{
  "value": [
    {"CustomerName": "客户A"},
    {"CustomerName": "客户B"},
    {"CustomerName": "客户C"}
  ],
  "count": 3
}

2. 转换Lookup输出为存储过程可接受的格式

根据你的Snowflake存储过程参数类型,选择对应的转换方式:

情况1:存储过程接受逗号分隔的字符串参数

用ADF的join函数把所有客户名称拼接成单个字符串:

join(activity('你的Lookup活动名称').output.value, ',')

示例输出:客户A,客户B,客户C

情况2:存储过程接受Snowflake ARRAY类型参数

用ADF的array函数提取所有客户名称生成数组:

array(activity('你的Lookup活动名称').output.value.CustomerName)

示例输出:["客户A","客户B","客户C"]

3. 在脚本活动中调用存储过程

在ADF脚本活动中编写调用语句,并绑定转换后的参数:

针对情况1(逗号分隔字符串)

脚本内容:

call 你的存储过程名称(?);

参数设置:添加一个参数,值填上述join表达式,参数类型选String。

针对情况2(Snowflake数组)

脚本内容:

call 你的存储过程名称(?);

参数设置:添加一个参数,值填上述array表达式,参数类型选String(ADF会将数组转成字符串传递,Snowflake可自动识别为ARRAY类型)。

4. 排查之前失败的原因

你之前用call procedure(?,?);失败,核心原因是Lookup返回的是多客户数组,直接绑定CustomerName时ADF会默认取数组第一个元素,导致参数数量不匹配。现在通过将所有客户合并为单个参数传递,无需迭代即可批量处理。

另外需确保Snowflake存储过程内部已实现批量客户的处理逻辑(比如拆分逗号字符串遍历,或直接遍历输入数组)。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:30:02