当我查询两个级别的嵌套字段时,我会错过一些行。
架构是这样的:
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?
答案 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
值。