Sql 如何在Bigquery中查询多个嵌套字段?
当我查询两级嵌套字段时,我遗漏了一些行 模式如下所示:Sql 如何在Bigquery中查询多个嵌套字段?,sql,nested,google-bigquery,bigquery-standard-sql,Sql,Nested,Google Bigquery,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.Currenc
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
一些变体。价格记录为空
使用此查询查询此表时:
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的行
如何修改第二个查询,使其返回所有行,如果变量。Prices丢失,则显示NULL 您可能对文档中的主题感兴趣。使用
左连接
,而不是逗号,例如:
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
。您可能对文档中的主题感兴趣。使用左连接
,而不是逗号,例如:
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
。您的比率较低。重要信息:因此,您必须使用投票下方张贴答案左侧的勾号来标记已接受的答案。这将提高你的利率。通过访问此链接了解其工作原理:谢谢@Pentium10,刚刚浏览了我所有的问题并标记了已接受的答案。您的评分很低。重要信息:因此,您必须使用投票下方张贴答案左侧的勾号来标记已接受的答案。这将提高你的利率。通过访问此链接了解其工作原理:谢谢@Pentium10,刚刚浏览了我所有的问题并标记了已接受的答案。谢谢@Elliott,这很有效!现在如何使用where子句?当我执行where Prices.Country in('GB',NULL)
时,我只得到有Prices.Country=GB的行,而没有这些空行。中的如果元素为NULL
,则返回NULL
,因此不能将其用于比较。请改用Prices.Country为空或Prices.Country='GB'
。谢谢@Elliott!当我尝试where Prices.Country='GB'
条件时,仍然会得到如下结果:。我的条件有什么问题,我应该如何使用它?根据该输出,您似乎选择了原始的价格
,作为选择
列表的一部分,而不是最新
产生的价格。例如,将UNNEST
中的一个调用为Price
(单数)可能是个好主意。谢谢@Elliott,这很有效!现在如何使用where子句?当我执行where Prices.Country in('GB',NULL)
时,我只得到有Prices.Country=GB的行,而没有这些空行。
中的如果元素为NULL
,则返回NULL
,因此不能将其用于比较。请改用Prices.Country为空或Prices.Country='GB'
。谢谢@Elliott!当我尝试where Prices.Country='GB'
条件时,仍然会得到如下结果:。我的条件有什么问题,我应该如何使用它?根据该输出,您似乎选择了原始的价格
,作为选择
列表的一部分,而不是最新
产生的价格。例如,最好将UNNEST
中的一个调用为Price
(单数)。