在不平展结果的情况下向查询添加 ORDER BY 语句会导致"Cannot query the cross product of repeated fields"


查询:    "从 [表] 中选择 * 按 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"标志

相关内容

最新更新