Snowflake cloud data platform 雪花sql udtf连接性能

Snowflake cloud data platform 雪花sql udtf连接性能,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,来自SQLSERVER领域,我非常喜欢使用交叉应用/外部应用模式查询表值函数。snowsql似乎没有这种命令,但我能够复制该功能。你能告诉我这是如何连接的吗 TVF 创建或替换函数udf\u user\u friends(user\u id varchar) 返回表(用户id varchar、朋友id varchar) 作为 $$ 挑选 userjson:user\u id::字符串作为user\u id ,f.value::作为朋友id的字符串 来自yelp.user u, 横向展平(输入=>

来自SQLSERVER领域,我非常喜欢使用交叉应用/外部应用模式查询表值函数。snowsql似乎没有这种命令,但我能够复制该功能。你能告诉我这是如何连接的吗

TVF
创建或替换函数udf\u user\u friends(user\u id varchar)
返回表(用户id varchar、朋友id varchar)
作为
$$
挑选
userjson:user\u id::字符串作为user\u id
,f.value::作为朋友id的字符串
来自yelp.user u,
横向展平(输入=>split(u.userjson:friends,,'))f
其中userjson:user\u id=user\u id
$$;
使用udf的查询
选择
u、 userjson:user\u id::字符串作为user\u id
,t.friend\u id
来自yelp.user u
左连接表(udf_user_friends(u.userjson:user_id::string))t;

从根本上说,我觉得这似乎有点不对。您的UDTF已加入到您已有数据的表中。。因此,这似乎是一类“隐藏复杂性”的函数,这也是同一类被称为“隐藏性能”的问题

我在删除零值UDTF的情况下开始编写外部选择,以发现结果就是UDTF的内容。。某种程度上证明UDTF是在增加零值

SELECT 
    u.userjson:user_id::string as user_id
    ,f.value::string as friend_id
FROM yelp.user u,
lateral flatten (input=>split(u.userjson:friends, ',')) f

我们使用UDTF的目的是在进行许可时向下推过滤,优化器有时看不到过滤器会被向下推。

从根本上说,这对我来说似乎相当错误。您的UDTF已加入到您已有数据的表中。。因此,这似乎是一类“隐藏复杂性”的函数,这也是同一类被称为“隐藏性能”的问题

我在删除零值UDTF的情况下开始编写外部选择,以发现结果就是UDTF的内容。。某种程度上证明UDTF是在增加零值

SELECT 
    u.userjson:user_id::string as user_id
    ,f.value::string as friend_id
FROM yelp.user u,
lateral flatten (input=>split(u.userjson:friends, ',')) f

我们使用UDTF的目的是在进行许可时向下推过滤,优化器有时看不到过滤器会被向下推。

如果用户id是一个id,又称为数字,将其转换为字符串并启用连接,则执行效果不好。我真的很喜欢用交叉应用/外部应用模式查询表值函数。”-毫无疑问,我也经历了有时会导致的缓慢性能@米奇麦有时!如果user_id是一个id又称为number,将其转换为字符串并执行join操作将不会很好地执行。我真的很喜欢用交叉应用/外部应用模式查询表值函数。”-毫无疑问,我也经历了有时会导致的缓慢性能@米奇麦有时!