Как вызвать UDF Snowflake в запросе выбора - PullRequest
0 голосов
/ 21 февраля 2020

Я создал функцию UDF для поиска справочной таблицы

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
$$
;

Я могу вызвать UDF с помощью простого запроса SELECT

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

, но я хочу использовать это как поиск во время чтения данных из другой таблицы

SELECT DISTINCT COMPANY_CODE,SRC_SYSTEM_ID,
udf_rdm_lookup_func_test(SRC_SYSTEM_ID,'LOBCode',COMPANY_CODE)[2] 
FROM ABC; 

При запуске я получаю сообщение об ошибке

SQL Ошибка [2031] [42601]: SQL ошибка компиляции: cannotНе поддерживается тип неподдерживаемого подзапроса

Хотите знать, как создать функцию, которую можно использовать в операторе SELECT при чтении данных из другой таблицы? Пожалуйста, помогите

1 Ответ

0 голосов
/ 21 февраля 2020

Ваш запрос возвращает более 1 значения. Предложение использовать табличную функцию могло бы справиться с этим, но если вы хотите вернуть его в виде массива с одним значением, то вам действительно нужно создать оператор SQL для его возврата. Попробуйте использовать функцию ARRAY_AGG () в вашем SELECT.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...