SELECT ... LIMIT 1查询导致多行?

时间:2013-09-30 19:21:38

标签: limit google-bigquery

我注意到,对包含嵌套或重复数据的表执行LIMIT查询时,返回的行数将超过预期的行数。例如,针对开发人员指南中的persons示例数据集运行的以下查询会产生以下结果:

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

看起来BQL在展平结果之前应用LIMIT运算符而不是相反(我认为这会更有意义)。

这是BQL实现中的错误还是预期的行为?如果这是预期的行为,有人可以提供一个解释为什么这是有道理的?

1 个答案:

答案 0 :(得分:1)

这是预期BigQuery展平查询结果的方式。运行查询时,LIMIT 1适用于重复记录。然后结果在输出中变平,你得到两行。解决方法是使用显式展平操作。例如:

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

这将只返回一行。