Big query "SELECT * EXCEPT"



我正在学习如何查询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

相关内容

  • 没有找到相关文章

最新更新