在 Snowflake 中加入 UDF

Joining on UDFs in 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'

如果第一个查询不起作用,我会理解。但是,由于第一个查询 does 有效,为什么我会被告知 RSP.ID 无效?

我找到了解决方案:

    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 发生在函数执行之前,因此 "nothing" 到 JOIN on。

我相信只选择我想要反对的行会更有效率*,但上面的方法对我有用。