如何在 Select 查询中调用 Snowflake UDF

How to call a Snowflake UDF in a Select query

我创建了一个 UDF 函数来查找参考 table

CREATE OR REPLACE function udf_rdm_lookup_func_test(
src_system VARCHAR,
src_code VARCHAR, 
src_value varchar)
returns array 
as
$$
SELECT DISTINCT DESC FROM rdm WHERE SOURCE_CODE = SRC_CODE AND SOURCE_VALUE = SRC_VALUE AND SOURCE_SYSTEM = SRC_SYSTEM
$$
;

我能够在一个简单的 SELECT 查询中调用 UDF

select udf_rdm_lookup_func_test('XYZ','LOBCode','001');

但我想在从另一个 table

读取数据时将其用作查找
SELECT DISTINCT COMPANY_CODE,SRC_SYSTEM_ID,
udf_rdm_lookup_func_test(SRC_SYSTEM_ID,'LOBCode',COMPANY_CODE)[2] 
FROM ABC; 

运行 我收到一个错误

SQL Error [2031] [42601]: SQL compilation error:¶Unsupported subquery type cannot be evaluated

想知道如何创建一个可以在 SELECT 语句中使用的函数,同时从另一个 table 读取数据吗?请帮助

您的查询 return 超过 1 个值。利用 table 函数的建议可以解决这个问题,但是如果您想 return 它作为单个值数组,那么您实际上必须创建 SQL 语句来 return 那。尝试在 SELECT.

中使用 ARRAY_AGG() 函数

https://docs.snowflake.net/manuals/sql-reference/functions/array_agg.html

我认为您可以通过将返回值包含在 any_value() 中来解决这个问题。例如:

CREATE OR REPLACE function udf_rdm_lookup_func_test(
src_system VARCHAR,
src_code VARCHAR, 
src_value varchar)
returns array 
as
$$
SELECT DISTINCT any_value(DESC) FROM rdm WHERE SOURCE_CODE = SRC_CODE AND SOURCE_VALUE = SRC_VALUE AND SOURCE_SYSTEM = SRC_SYSTEM
$$
;