#user-defined-functions #snowflake-cloud-data-platform
#определяемые пользователем функции #snowflake-облачная платформа для обработки данных
Вопрос:
После создания некоторых UDF-файлов выполняется следующий запрос:
SELECT
rsp.id
FROM TABLE(UDF_1('2019-04-18 12:00:00'::timestamp_ltz)) AS rsp
Однако этот запрос:
SELECT
rsp.id
FROM TABLE(UDF_1('2019-04-18 12:00:00'::timestamp_ltz)) AS rsp
JOIN TABLE(UDF_2('2019-04-18 12:00:00'::timestamp_ltz)) AS rasp ON
rsp.id = rasp.id AND
rsp.timestamp = rasp.start;
Дает мне:
SQL compilation error: error line 5 at position 8 invalid identifier 'RSP.ID'
Если бы первый запрос не сработал, я бы понял. Однако, поскольку первый запрос действительно работает, почему мне тогда говорят RSP.ID
, что он недействителен?
Комментарии:
1. Похоже на возможную ошибку / ограничение. Пожалуйста, рассмотрите возможность повышения этого с помощью поддержки Snowflake.
Ответ №1:
Я смог найти решение:
SELECT
rsp.id
FROM (SELECT * FROM TABLE(UDF_1('2019-04-18 12:00:00'::timestamp_ltz))) AS rsp
JOIN (SELECT * FROM TABLE(UDF_2('2019-04-18 12:00:00'::timestamp_ltz))) AS rasp ON
rsp.id = rasp.id AND
rsp.timestamp = rasp.start;
работает. Мы предположили, что JOINs
это происходило до выполнения функции, поэтому «ничего» не нужно JOIN
было включать.
Я уверен, что это может быть более эффективным, если выбрать только те строки, которые я хочу противопоставить *
, но вышеприведенное сработало для меня.