You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake中LEFT JOIN LATERAL FLATTEN未生效,表现如INNER JOIN

问题分析与解决

这不是Snowflake的bug,问题出在FLATTEN函数的默认行为:当输入为NULL时,它不会生成任何输出行。你的第一条数据(包含x、y、z的JSON对象)没有exclude字段,val:exclude会返回NULL,导致FLATTEN没有输出行,最终LEFT JOIN后这部分数据无法被保留。

解决方法

只需给FLATTEN添加OUTER => TRUE参数,让它在输入为NULL或空数组时返回一行值为NULL的记录,即可实现预期的LEFT JOIN效果:

with source_cte as (
select val, i.value::TEXT as include_symbol
from test_json, lateral flatten(input=>val:include) as i
)
select
include_symbol,
e.value::TEXT as exclude_symbol
from source_cte 
LEFT JOIN LATERAL FLATTEN(input=>val:exclude, OUTER => TRUE) e

执行结果

修改后的查询会返回预期结果:

INCLUDE_SYMBOL    EXCLUDE_SYMBOL
x                 NULL
y                 NULL
z                 NULL
d                 a
d                 b
e                 a
e                 b

内容的提问来源于stack exchange,提问作者archjkeee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 11:38:21