大查询中列​​的结构值

Struct values to columns in big query

我有一列“设备”,每一行都有结构值

设备

(第 1 行)

brand_name brand_id country
huawei 34j0 china

(第 2 行)

brand_name brand_id country
sony ds5g japan

我们可以通过这样做从这些结构创建列

SELECT
device.brand_name 
device.brand_id 
device.country 
from table

在这种情况下,结构只有三个值(brand_name、brand_id、国家/地区)但是如果结构有 n 个值怎么办,所以我想做的是而不是访问每个值value in struct by devicedevice.brand_name,device.brand_id...etc ,我想循环其中的所有值并将其作为一列,有没有办法做到这一点? , 谢谢

您可以只使用通配符 *。更具体地说:

WITH devices as (
SELECT STRUCT("sony" as brand_name, "ds5g" as brand_id, "japan" as country) as device UNION ALL
SELECT STRUCT("huawei" as brand_name, "34j0" as brand_id, "china" as country) as device
)

SELECT device.* FROM devices