我注意到,对包含嵌套或重复数据的表执行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实现中的错误还是预期的行为?如果这是预期的行为,有人可以提供一个解释为什么这是有道理的?
答案 0 :(得分:1)
这是预期BigQuery展平查询结果的方式。运行查询时,LIMIT 1
适用于重复记录。然后结果在输出中变平,你得到两行。解决方法是使用显式展平操作。例如:
SELECT fullName, children.name
FROM (FLATTEN([persons.person], children.name) LIMIT 1
这将只返回一行。