如何在Bigquery中查询多个嵌套字段?

时间:2017-03-23 13:02:31

标签: sql nested google-bigquery standard-sql

当我查询两个级别的嵌套字段时,我会错过一些行。

架构是这样的:

Productid   STRING  REQUIRED 
Variants    RECORD  REPEATED
Variants.SKU    STRING  NULLABLE
Variants.Size   STRING  NULLABLE
Variants.Prices RECORD  REPEATED
Variants.Prices.Country STRING  NULLABLE
Variants.Prices.Currency    STRING  NULLABLE

部分Variants.Prices记录为空。

当我使用此查询查询此表时:

select Productid,Variants.SKU,Variants.Size
from ga-export-0000.feed.feed_dev
,UNNEST (Variants) AS Variants

我得到的行多于这一行:

select Productid,Variants.SKU,Variants.Size
,Prices.Currency,Prices.Country
from ga-export-0000.feed.feed_dev
,UNNEST (Variants) AS Variants
,UNNEST(Variants.Prices) as Prices 

那是因为它不会返回缺少Variants.Prices的行。

我如何修改我的第二个查询,以便返回所有行,如果缺少Variants.Prices,它会显示NULL?

1 个答案:

答案 0 :(得分:1)

您可能对文档中的Flattening arrays主题感兴趣。使用LEFT JOIN代替逗号,例如:

select Productid,Variants.SKU,Variants.Size
,Prices.Currency,Prices.Country
from `ga-export-0000.feed.feed_dev`
,UNNEST (Variants) AS Variants
LEFT JOIN UNNEST(Variants.Prices) as Prices 

如果该数组为空,则返回NULL Prices值。