首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BigQuery视图之谜

BigQuery视图之谜
EN

Stack Overflow用户
提问于 2015-12-30 15:50:15
回答 1查看 192关注 0票数 2

这是我的迷思。在控制台上,当我计算这个查询时,它运行得非常好:

代码语言:javascript
复制
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的视图,然后运行:

代码语言:javascript
复制
SELECT * FROM dataset.myview LIMIT 1000

但是,这会引发以下错误:

选择引用非常量字段或使用聚合函数或有一个或多个WHERE、省略IF、GROUP、ORDER子句必须具有FROM子句的查询。

尽管如此,当我尝试:SELECT * FROM dataset.myview,即没有LIMIT,它是有效的!!

事实上,当我在底部运行限制的完整查询时,它也会引发错误:

代码语言:javascript
复制
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;

然而,当我添加一个内部顺序时,它再次很好地计算:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-30 17:19:14

如果对视图中的选择应用订单,会发生什么情况?或者你需要随机的结果?

如果查询中没有保证输出结果集的顺序的操作符,则带有限制子句的查询可能仍然是不确定的。这是因为BigQuery使用大量并行工作人员执行。不保证并行作业返回的顺序。

我不知道为什么这里的订单会起作用。然而,看到没有任何订单的限制通常是奇怪的;这就是为什么我询问订单。一个完整的结果是,在内部选择完成之前,并行工作人员可能正在完成外部连接和限制,从而导致内部错误;通过应用系统的命令,在执行内部连接连接之前,必须将记录具体化。

但我真的不知道

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34532675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档