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

运行BigQuery SQL查询时出现标量子查询返回多行错误,原因何在?

嘿,这个错误我太熟了!咱们来拆解一下问题出在哪儿,以及怎么快速解决~

问题原因分析

你遇到的BQ Scalar subquery produced more than one element错误,核心原因是标量子查询返回了多个值——你在SELECT里写的(select item.quantity from unnest (_raw.line_items) as item)属于标量子查询,BigQuery要求这类查询必须只能返回单个值,但_raw.line_items是一个数组,用UNNEST展开后会得到多行数据,这就导致子查询返回了多个quantity值,BigQuery不知道该把哪个值对应到原订单的行里,自然就报错了。

解决方法

根据你想要的最终数据结构,有两种常见的处理思路:

思路1:保留原订单行,把所有quantity存成数组

如果希望每个订单还是一行,同时把该订单下的所有quantity汇总成一个数组,可以用ARRAY()函数包裹子查询:

SELECT 
  _raw.created_at, 
  _raw.name, 
  ARRAY(SELECT item.quantity FROM UNNEST(_raw.line_items) AS item) AS quantity_array
FROM `Orders` 
WHERE DATE(_raw.created_at) = "2020-04-27"

这样返回的quantity_array字段就是一个包含当前订单所有商品数量的数组。

思路2:展开数组,每个商品占一行

如果需要把每个订单的商品明细拆成单独的行(每个行对应一个商品的quantity),直接在FROM子句里UNNEST数组就行,不用嵌套子查询:

SELECT 
  _raw.created_at, 
  _raw.name, 
  item.quantity
FROM `Orders`,
UNNEST(_raw.line_items) AS item
WHERE DATE(_raw.created_at) = "2020-04-27"

这种方式会把每个订单的多个商品条目拆成多行,适合需要查看明细数据的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:12:36