Сообщение об ошибке при попытке запустить функцию в функции - PullRequest
2 голосов
/ 14 апреля 2020

Я создаю две функции, которые хорошо работали как отдельные функции. Но когда я пытаюсь запустить один из них внутри второго, я получаю ошибку: 'SQL ошибка компиляции: неподдерживаемый тип подзапроса не может быть оценен'

Можете ли вы посоветовать? Добавление кода ниже:

CASE  
    WHEN (regexp_substr(ARGUMENTS_JSON,'drives_removed":\\[]') = 'drives_removed":[]') THEN **priceperitem(1998, returnitem_add_item(ARGUMENTS_JSON))**
    WHEN (regexp_substr(ARGUMENTS_JSON,'drives_added":\\[\\]') = 'drives_added":[]') THEN 1
    WHEN (regexp_substr(ARGUMENTS_JSON,'from_flavor') = 'from_flavor') THEN 1
    WHEN (regexp_substr(ARGUMENTS_JSON,'{}') = '{}') THEN 1
    ELSE 'Other'
END as Price_List,

Проблема возникла, когда с функцией 'priceperitem' Если я заменю returnitem_add_item на строку, то она будет работать нормально.

Функция 1: priceperitem получить номер клиента и a возврат цены товара за единицу из прайс-листа клиента
Функция 2: строка анализа returnitem_add_item и возврат строки

1 Ответ

0 голосов
/ 14 апреля 2020

В качестве альтернативы вы можете попробовать обработать udf внутри udf следующим образом:

create function x()
returns integer
as
$$
select 1+2
$$
;

set q=x();

create function pi_udf(q integer)
  returns integer
  as 
  $$
  select q*3
  $$
  ;

select pi_udf($q);

Если это также не помогает, возможно, проблема связана с данными c. Попробуйте выполнить функцию с одной записью, а затем добавьте больше записей, чтобы увидеть разницу в поведении. Существуют определенные ограничения на использование SQL UDF в Snowflake и, следовательно, ошибка «Неподдерживаемый подзапрос».

...