查询: "从 [表] 中选择 * 按 ID 排序限制 10" 允许大结果 = 真 平展结果 = 假表架构: [ { "名称": "id", "类型": "字符串", "模式":"可为空" }, { "名称": "repeated_field_1", "类型": "字符串", "模式":"重复" }, { "名称": "repeated_field_2", "类型": "字符串", "模式":"重复" } ]
查询"从 [表] 限制 10 中选择 * "工作正常。当我添加 order by 子句时,我会收到此错误,即使 order by 没有提到任何一个重复字段。
有什么办法可以做到这一点吗?
ORDER BY
子句会导致 BigQuery 自动平展查询的输出,从而导致您的查询尝试生成 repeated_field_1 和 repeated_field_2 的交叉乘积。
如果您不关心保留字段的重复性,则可以显式FLATTEN
这两个字段,这将导致查询生成原始查询所抱怨的交叉乘积。
SELECT *
FROM FLATTEN(FLATTEN([table], repeated_field_1), repeated_field_2)
ORDER BY id DESC
LIMIT 10
除此之外,我没有一个很好的解决方法来使您的查询既ORDER BY
又输出重复字段。
另请参阅:BigQuery 在选择具有 GROUP BY 的表中时平展结果,即使打开了"noflatten_results"标志