我在BigQuery中有几个临时表(通过WITH语句创建),并希望将它们作为嵌套数据结构组合在结果语句中。
这里是一个示例,其中最终选择显然不起作用:
with data as (
select 10 as points UNION ALL
select 12 as points UNION ALL
select 20 as points
),
stuff as (
select 1 as foo, 2 as bar
)
select
foo, bar,
(select * from data) as subTable
from stuff
我想生成如下所示的输出(为简便起见,使用json表示法):
{
foo: 1,
bar: 2,
subTable: [
{points: 10}, {points: 12}, {points: 20}
]
}
我如何实现这一目标,这有可能吗?
答案 0 :(得分:0)
好吧,我自己弄清楚了。
有两个主要成分:ARRAY
和SELECT AS STRUCT
select
foo, bar,
ARRAY(select as struct * from data) as subTable
from stuff
ARRAY
函数调用会从结果中产生错误,SELECT AS STRUCT
将结果转换为嵌套在内部的结构。
答案 1 :(得分:0)
为此的另一个选择是
#standardSQL
SELECT foo, bar,
(SELECT ARRAY_AGG(data) FROM data) AS subTable
FROM stuff