选择进入嵌套数据结构的条目

时间:2019-10-10 09:08:11

标签: google-bigquery

我在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}
  ]
}

我如何实现这一目标,这有可能吗?

2 个答案:

答案 0 :(得分:0)

好吧,我自己弄清楚了。 有两个主要成分:ARRAYSELECT 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