2017-03-23 2 views
0

내가 두 레벨 중첩 필드를 쿼리하면 일부 행이 누락됩니다.Bigquery에서 중첩 된 여러 필드를 쿼리하는 방법은 무엇입니까?

스키마는 다음과 같이이다 :

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 

을 내가보다 더 많은 행을 얻을이 하나

그렇지 Variants.Prices 누락 된 행을 반환 않기 때문이다
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가 누락되면 NULL을 표시합니까?

+0

당신은 낮은 비율이 있습니다. 중요한 점은 게시 된 답변의 왼쪽에있는 투표를 사용하여 승인 된 답변에 표시를해야한다는 것입니다. 그러면 요금이 올라갑니다. 이 링크를 방문하여 작동 방식을 확인하십시오. http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work#5235 – Pentium10

+0

고마워요 @ Pentium10, 그냥 내 모든 질문을 거쳐 허용 표시 답변. – user912830823

답변

1

설명서에서 Flattening arrays 주제에 관심이있을 수 있습니다. 쉼표 대신, 해당 배열이 비어있는 경우, 예컨대 :

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 값을 반환합니다 LEFT JOIN를 사용합니다.

+0

감사합니다 @ 엘리엇, 그게 효과가! where 절을 어떻게 사용할 수 있습니까? 내가''Prices.Country in ('GB', NULL) '을 할 때 Prices.Country = GB 인 빈 행은 없으며 빈 행은 없습니다. – user912830823

+1

'IN'은 요소가'NULL'이면'NULL'을 리턴하므로 비교를 위해 사용할 수 없습니다. 대신 'Prices.Country is NULL OR Prices.Country ='GB '를 사용하십시오. –

+0

감사합니다 @ 엘리엇! 내가 'Price.Country ='GB '조건을 시험해 볼 때 나는 아직도 이와 같은 결과를 얻는다. [link] (http://www.awesomescreenshot.com/image/2345250/4446c2daf89ec5fb7c44cf79ad088fdc). 내 상태에 어떤 문제가 있으며 어떻게 사용해야합니까? – user912830823

관련 문제