2013-09-30 34 views
2

我注意到,當LIMIT查詢針對包含嵌套或重複數據的表執行時,返回的行數將超過預期的行數。例如,針對從顯影劑導向設置persons樣本數據運行下面的查詢產生以下結果:SELECT ... LIMIT 1查詢結果在多行中?

% bq query 'SELECT fullName, children.name FROM [persons.person] LIMIT 1' 
+----------+---------------+ 
| fullName | children_name | 
+----------+---------------+ 
| John Doe | Jane   | 
| John Doe | John   | 
+----------+---------------+ 

它看起來像BQL被平坦化的結果,而不是周圍的其他方法之前應用LIMIT運算符(我認爲這會更有意義)。

這是BQL實施中的錯誤還是這是預期的行爲?如果這是預期的行爲,有人可以提供解釋爲什麼這是有道理的?

回答

1

根據BigQuery使查詢結果變平的方式,這是預期的。當您運行查詢時,LIMIT 1適用於重複的記錄。然後結果在輸出中變平,並且你得到兩行。解決方法是使用明確的展平操作。例如:

SELECT fullName, children.name 
FROM (FLATTEN([persons.person], children.name) LIMIT 1 

這將只返回一行。

相關問題