[英]BigQuery: NEST alternative in Standard SQL
我有点惊讶,但是这个查询:
select *
from (select 1 as x),
(select 2 as x),
(select 3 as x),
(select 4 as x),
(select 5 as x)
返回与此查询完全相同的东西:
select *
from (select 1 as x),
(select 2 as x),
(select 3 as x),
(select 4 as x),
(select 5 as x);
毫无疑问,问题是缺少group by
。 因此,我认为一个简单的select *
就可以满足您的要求:
select *
from (select 1 as x union all select 2 union all select 3 union all select 4 union all select 5
) n
以下是BigQuery:
实际上,标准SQL中的ARRAY_AGG() 等同于旧版SQL中的NEST()
它们都返回一行中的元素数组
不同之处在于用户界面如何显示结果重复字段-对于旧版SQL用户界面,结果将被扁平化,这就是为什么您将其视为“扁平化数组”的原因
您可以通过以下方式进行测试
#legacySQL
SELECT COUNT(1) rows FROM (
SELECT NEST(x) y
FROM (SELECT 1 AS x),
(SELECT 2 AS x),
(SELECT 3 AS x),
(SELECT 4 AS x),
(SELECT 5 AS x)
)
结果
Row rows
1 1
请记住-UI中的扁平化仅发生在大多数外部选择语句中,并且所有内部选择都将NEST视为ARRAYS /重复字段
从将结果保存到表中开始-如果要将以下输出保留为重复字段
#legacySQL
SELECT NEST(x) y
FROM (SELECT 1 AS x),
(SELECT 2 AS x),
(SELECT 3 AS x),
(SELECT 4 AS x),
(SELECT 5 AS x)
您需要确保已禁用“ Flatten Results
,并且还需要“ Allow Large Results
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.