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

如何在BigQuery查询中生成计算衍生多行(非数组展开)

实现单条记录拆分为多行输出的方法

在BigQuery中,完全可以通过计算将单条记录拆分为多行输出,无需展开数组。针对你的需求,这里提供两种直接的实现方式:

方法一:使用UNION ALL拆分查询结果

这是最直观的方式,分别查询不含税价格和税费后合并结果:

WITH products_incl_taxes AS (
  SELECT "Color TV" AS product, 6000 AS price
)
-- 查询不含税价格行
SELECT product, price / 1.2 AS price
FROM products_incl_taxes
UNION ALL
-- 查询税费行
SELECT "Taxes" AS product, price * (0.2 / 1.2) AS price
FROM products_incl_taxes

执行后得到的结果如下:

ProductPrice
Color TV5000
Taxes1000

方法二:使用UNNEST结合结构化数据(非数组展开逻辑)

如果想避免多次扫描原表,可以用ARRAY构造包含两行数据的结构,再通过UNNEST展开(这里虽用到UNNEST,但本质是基于计算生成的结构化数据,并非展开原表中的数组字段):

WITH products_incl_taxes AS (
  SELECT "Color TV" AS product, 6000 AS price
)
SELECT 
  item.product_name AS product,
  item.calculated_price AS price
FROM products_incl_taxes,
UNNEST([
  STRUCT(product AS product_name, price / 1.2 AS calculated_price),
  STRUCT("Taxes" AS product_name, price * (0.2 / 1.2) AS calculated_price)
]) AS item

该查询会一次性生成两行数据,结果与方法一完全一致,且仅扫描一次原表,数据量较大时性能更优。

说明

两种方法均不依赖原表中的数组字段,完全通过计算生成多行结果,符合你“非展开数组”的要求。若表中有多条商品记录,两种方法都会自动为每个商品生成对应的两行数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 20:21:13