2017-03-23 15 views
0

私は2つのレベルのネストされたフィールドをクエリ私はいくつかの行を欠場。Bigqueryの複数のネストされたフィールドを照会するには?

スキーマは、このようなものです:Variants.Pricesレコードの

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 

私はこの1つを持つよりも多くの行を取得:

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が欠落した行を返していないためです。

2番目のクエリを変更してすべての行を返すようにするにはどうしたら、Variants.Pricesが見つからない場合はNULLが表示されますか?

+0

あなたのレートは低いです。重要なので、あなたは、投票の下の投稿された回答の左側にあるチェックマークを使用して、受け入れられた回答に印を付ける必要があります。これはあなたの率を高めます。どのようにこのリンクを参照して、この動作を参照してください:http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work#5235 – Pentium10

+0

ありがとう@ Pentium10、ちょうどすべての私の質問を通過し、答え。 – user912830823

答えて

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 

その配列が空の場合、これはPricesNULL値を返します。

+0

ありがとう@エリオット、それは働いた! where節を使用するにはどうしたらいいですか?私が '' Prices.Country in( 'GB'、NULL) 'を実行すると、Prices.Country = GBの行だけが取得され、空のものはありません。 – user912830823

+1

'IN'は要素が' NULL'ならば 'NULL'を返しますので、それを比較に使うことはできません。代わりに、 'Prices.Country IS NULL OR Prices.Country = 'GB'を使用してください。 –

+0

ありがとう@エリオット!私が 'Prices.Country = 'GB'の条件を試しても、私はまだこのような結果を得ています:[リンク](http://www.awesomescreenshot.com/image/2345250/4446c2daf89ec5fb7c44cf79ad088fdc)。私の状態に何が問題なのですか?どうすれば使用できますか? – user912830823

関連する問題