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

如何在Snowflake UDF中声明可变数量的输入参数?

Snowflake UDF 支持可变数量输入参数的解决方案

要让你的Snowflake UDF支持可变数量的输入参数,需要使用**VARIADIC**关键字声明可变参数,它会自动将传入的多个参数打包成数组。以下是具体实现:

正确的UDF创建语句

CREATE OR REPLACE FUNCTION concat_ws_athena(VARIADIC s array)
  returns string
  as 
  $$
  -- 对传入的数组去空后拼接,若无需过滤空值可直接用 array_to_string(s, '')
  array_to_string(array_compact(s), '')
  $$
  ;

调用示例

你可以直接传入任意数量的字符串参数,无需手动构造数组:

-- 传入2个参数
SELECT concat_ws_athena('a', 'b'); -- 返回 'ab'

-- 传入多个参数,空值会被自动过滤
SELECT concat_ws_athena('a', '', 'c', null, 'd'); -- 返回 'acd'

原写法失效的原因

你之前直接声明数组参数的写法,要求调用时必须传入一个数组类型的值(比如SELECT concat_ws_athena(array_construct('a', 'b'))),但你实际调用时传的是两个独立的字符串,参数类型不匹配,因此执行报错。而VARIADIC关键字的作用就是让UDF接受多个分散的参数,并自动将它们转换为数组,完全匹配你的调用习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 21:35:14