如何在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
相关产品推荐
相关产品推荐

