2016-11-29 2 views
1

을 사용하여 BigQuery 중첩 테이블을 읽는 방법 Apache Beam Python SDK를 사용하여 중첩 구조를 읽으려면 어떻게해야합니까?Dataflow Python SDK

"reason": "invalidQuery", 
"message": "Cannot output multiple independently repeated fields at the same time. Found classification_item_distribution and category_cat_name" 

에서

lines = p | io.Read(io.BigQuerySource('project:test.beam_in')) 

결과는 중첩 된 구조를 읽을 수 있습니까?

답변

1

이것은 BigQuery의 속성입니다. 이러한 쿼리를 실행하는 두 가지 방법은 (BigQuery를 사용하여) 결과 병합을 사용하지 않도록 설정하거나 쿼리의 필드를 명시 적으로 병합하는 것입니다.

현재 Python SDK에서는 후자 만 사용할 수 있습니다. FLATTEN 함수를 호출하는 위치와 방법에 대한 지침은 "Flattening Google Analytics data (with repeated fields) not working anymore"을 참조하십시오.

플랫 닝을 비활성화하는 기능은 업데이트 구독이나 토론에 신경 쓰면 BEAM-877으로 처리됩니다.

+0

감사합니다. 흥미롭게도 Java SDK를 사용하면 추가 구성없이 중첩 구조를 사용할 수 있습니다. –

1

이제 소스를 만들 때 flatten_results=False을 추가하여 빔 파이썬에서 직접 중첩 된 결과를 읽을 수 있습니다

lines = p | io.Read(io.BigQuerySource('project:test.beam_in', flatten_results=False)) 

페이지의 소스 here을.