这是我的迷思。在控制台上,当我计算这个查询时,它运行得非常好:
SELECT rd.ds_id AS ds_id
FROM (SELECT ds_id, 1 AS dummy FROM bq_000010.table) rd
INNER JOIN EACH (SELECT 1 AS dummy) cal ON (cal.dummy = rd.dummy);然后将其保存为一个名为dataset.myview的视图,然后运行:
SELECT * FROM dataset.myview LIMIT 1000但是,这会引发以下错误:
选择引用非常量字段或使用聚合函数或有一个或多个WHERE、省略IF、GROUP、ORDER子句必须具有FROM子句的查询。
尽管如此,当我尝试:SELECT * FROM dataset.myview,即没有LIMIT,它是有效的!!
事实上,当我在底部运行限制的完整查询时,它也会引发错误:
SELECT rd.ds_id AS ds_id
FROM (SELECT ds_id, 1 AS dummy FROM bq_000010.table) rd
INNER JOIN EACH (SELECT 1 AS dummy) cal ON (cal.dummy = rd.dummy) LIMIT 1000;然而,当我添加一个内部顺序时,它再次很好地计算:
SELECT rd.ds_id AS ds_id
FROM (SELECT ds_id,
1 AS dummy
FROM bq_000010.000010_flux_visites_ds
ORDER BY ds_id) rd
INNER JOIN EACH (SELECT 1 AS dummy) cal ON (cal.dummy = rd.dummy) LIMIT 1000发布于 2015-12-30 17:19:14
如果对视图中的选择应用订单,会发生什么情况?或者你需要随机的结果?
如果查询中没有保证输出结果集的顺序的操作符,则带有限制子句的查询可能仍然是不确定的。这是因为BigQuery使用大量并行工作人员执行。不保证并行作业返回的顺序。
我不知道为什么这里的订单会起作用。然而,看到没有任何订单的限制通常是奇怪的;这就是为什么我询问订单。一个完整的结果是,在内部选择完成之前,并行工作人员可能正在完成外部连接和限制,从而导致内部错误;通过应用系统的命令,在执行内部连接连接之前,必须将记录具体化。
但我真的不知道
https://stackoverflow.com/questions/34532675
复制相似问题