在 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。
我相信只选择我想要反对的行会更有效率*
,但上面的方法对我有用。
创建一些 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。
我相信只选择我想要反对的行会更有效率*
,但上面的方法对我有用。