Объединение в UDFs в Snowflake

#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 было включать.

Я уверен, что это может быть более эффективным, если выбрать только те строки, которые я хочу противопоставить * , но вышеприведенное сработало для меня.