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

BigQuery Unnest操作结果不一致:无卫星月球未显示问题求助

问题原因及修复方案

你当前使用的逗号分隔隐式连接等价于INNER JOIN逻辑——当某颗月球没有卫星时,moons.satellite对应空集合,INNER JOIN会直接过滤掉该行,因此看不到该月球的记录。

过去能显示月球名称+NULL卫星名的情况,大概率是以下两种原因之一:

  • 你之前实际使用的是LEFT JOIN UNNEST的显式写法,左连接会保留主表的所有行,哪怕关联的子数组为空,对应列会自动填充NULL;
  • BigQuery在版本迭代中调整了隐式UNNEST的语义:旧版本对空数组的UNNEST会生成一行带NULL的记录,现在严格遵循标准SQL逻辑,空数组UNNEST后无结果,自然不会保留对应行。

要恢复你需要的效果,将查询改为显式左连接UNNEST即可:

SELECT planet, moons.name, satellite.name
FROM your_table
LEFT JOIN UNNEST(your_table.moons) AS moons
LEFT JOIN UNNEST(moons.satellite) AS satellite

这样即使月球没有卫星,对应的行也会被保留,satellite.name列会显示为NULL。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:12:57