首页 > 解决方案 > 选择嵌套数据结构中的条目

问题描述

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

我怎样才能做到这一点,有可能吗?

标签: google-bigquery

解决方案


好吧,我自己想通了。有两个主要成分:ARRAYSELECT AS STRUCT

select 
  foo, bar,
  ARRAY(select as struct * from data) as subTable
from stuff

函数调用从结果中ARRAY创建错误,SELECT AS STRUCT将结果转换为嵌套在内部的结构。


推荐阅读