2

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

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

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

这是 BQL 实现中的错误还是预期的行为?如果这是预期的行为,有人可以解释为什么这是有意义的吗?

4

1 回答 1

1

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

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

这将只返回一行。

于 2013-09-30T22:00:32.737 回答