gpt4 book ai didi

snowflake-cloud-data-platform - 雪花 - 横向不能在连接的左侧

转载 作者:行者123 更新时间:2023-12-05 01:11:22 26 4
gpt4 key购买 nike

我有一个变体数据类型,我正在对其执行横向展平,但随后我需要左连接其中一个 json 元素,以从 Snowflake 中的另一个关系表中查找相应 ID 的值。当我这样做时,它给我错误“横向 View 不能位于连接的左侧”,这没有意义,因为如果我不包括外部连接,则创建 View ,然后在顶部创建一个附加 View 这个 View ,它允许我执行左连接。

例子:

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 之后无法 LEFT JOIN 的限制,但这里有两个潜在的解决方法...

选项 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 - 使用内联(匿名) View

create or replace view my_view
copy grants
as
select
c.row_id,
c.site_id,
es.site_name
from
(
select
rowid as row_id,
siteData.value:siteID::int as site_id
from
"RAW_DATA" raw,
lateral flatten(datamap:data, outer => true) siteData
) c
LEFT join ext_site es on es.siteid = c.site_id
;

就我个人而言,我会使用 CTE 方法,因为我发现它更具可读性。

关于您对 outer => true 的使用,仅当 VARIANT 结构不一致且不保证 data 键在您的 datamap 字典,其值(数组或字典)本身包含一个或多个元素或属性。如果不需要,我会删除它。

关于snowflake-cloud-data-platform - 雪花 - 横向不能在连接的左侧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63397022/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com