我正在学习如何查询bigquery(特别是struct和数组)
我有一个表结构如下参考表:表名:地址姓名(字符串),年龄(INT),地址(记录和重复)Address中的列为:address1、address2、city、zipcode
问题:如何选择除zipcode以外的所有列
我尝试如下查询
SELECT
EXCEPT(zipcode)
FROM Address, UNNEST(address)
上面的查询是两次检索地址记录字段列。
同样,随后运行的select命令如下
SELECT
Name,
Age,
Address
from temp
地址应包含除邮政编码以外的所有列。
如果你的地址数组爆炸了,你需要重建它。我不是SQL专家,但这段代码可以
select name,
age,
ARRAY_AGG(STRUCT(a.address1 as address1, a.address2 as address2, a.city as city)) as address
from Address, unnest(address) a
group by name, age
你不能使用* except
,因为你需要按你的键分组来重建你的数组agg
考虑下面-保留所有列,除了address
,其中zipcode
被删除
select * except(address),
array(select as struct * except(zipcode) from t.address) address
from Addresses t