如何解决雪花-横向不能在连接的左侧
我有一个变量数据类型,正在执行横向展平,但是然后我需要左联接一个json元素,以从Snowflake中的另一个关系表中查找对应ID的值。当我这样做时,它给我错误“横向视图不能在联接的左侧”,这是没有意义的,因为如果我不包括外部联接,则创建一个视图,然后在该视图的顶部创建另一个视图此视图使我可以执行左联接。
示例:
create or replace view my_view
copy grants
as
select
rowid as row_id,siteData.value:siteID::int as site_id,es.site_name AS site_name
from
"RAW_DATA" raw,lateral flatten(datamap:data,outer => true) siteData
LEFT join ext_site es on es.siteid = siteData.value:siteID
;
解决方法
我无法解释在LATERAL之后无法左联接的限制,但是有两个可能的解决方法...
选项1-使用CTE(公用表表达式)
create or replace view my_view
copy grants
as
with my_cte as (
select
rowid as row_id,siteData.value:siteID::int as site_id
from
"RAW_DATA" raw,lateral flatten(datamap:data,outer => true) siteData
)
select
c.row_id,c.site_id,es.site_name
from
my_cte c
LEFT join ext_site es on es.siteid = c.site_id
;
选项2-使用内联(匿名)视图
create or replace view my_view
copy grants
as
select
c.row_id,es.site_name
from
(
select
rowid as row_id,outer => true) siteData
) c
LEFT join ext_site es on es.siteid = c.site_id
;
我个人会使用CTE方法,因为我发现它更具可读性。
关于outer => true
的使用,只有在VARIANT结构以某种方式不一致并且不能保证data
字典中存在具有值(数组或字典)本身包含一个或多个元素或属性。如果不需要,那么我将其删除。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。