首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >snowflake sql udtf连接性能

snowflake sql udtf连接性能
EN

Stack Overflow用户
提问于 2021-04-03 12:43:10
回答 1查看 113关注 0票数 0

来自SQLSERVER领域的我已经真正喜欢上了使用交叉应用/外部应用模式查询表值函数。看起来snowsql没有这样的命令,但我能够复制它的功能。你能告诉我它的连接方式是否会有性能问题吗?

TVF

代码语言:javascript
复制
create or replace function udf_user_friends(user_id varchar)
returns table(user_id varchar,friend_id varchar)
as
$$
  select 
      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
  where userjson:user_id = user_id
$$;

使用udf的查询

代码语言:javascript
复制
SELECT 
      u.userjson:user_id::string as user_id
    , t.friend_id
FROM yelp.user u
LEFT JOIN TABLE(udf_user_friends(u.userjson:user_id::string)) t;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-03 13:45:47

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

我开始编写删除了零值UDTF的外部select,结果发现结果就是UDTF的内容。某种程度上证明了UDTF是在添加零值。

代码语言:javascript
复制
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的目的是在执行许可时向下推送过滤,此时优化器有时看不到可以向下推送过滤器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66927797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档