BigQuery:发生内部错误,请求无法完成

Posted

技术标签:

【中文标题】BigQuery:发生内部错误,请求无法完成【英文标题】:BigQuery : An internal error occurred and the request could not be completed 【发布时间】:2015-11-25 18:59:52 【问题描述】:

带有时间戳的简单选择查询失败:

SELECT COUNT(*) FROM [bi.table] WHERE  timestamp > DATE_ADD(CURRENT_TIMESTAMP(), -15, 'MINUTE') and column1 is null

查询失败:

Error: An internal error occurred and the request could not be completed. Job ID: exampleJob:job_lndEirUwwM_khdBrV8eMDmBDFiE   

bigquery 系统有什么问题吗?

https://status.cloud.google.com/ 没有说有什么问题。

【问题讨论】:

你能显示查询吗? @Leptonator 已编辑问题 看起来它现在可以工作了 :) 您能发布您的最终解决方案吗?这样,以后说不定还能帮到别人? @EranChetzroni 您是否进行了任何更改或者它现在对您有效? 【参考方案1】:

此错误实际上与时间戳无关。您在我们的流式摄取服务中遇到错误。在您运行查询时它已超载,无法提供已为您的表摄取的数据。我们正在调查并将解决根本问题。很抱歉给您带来不便。

【讨论】:

现在在2019-10-09 上体验这个。我们可以考虑采取什么措施来防止这种情况发生吗? 2020 年 2 月 13 日再次...有机会获得更多信息吗? @Hirnhamster/@Bulat ... 请告诉我你是如何解决这个问题的。 2021-02-14 再次 又在2021-09-13【参考方案2】:

建议不要在 COUNT.. 中使用通配符。尤其是大型表。如果我们稍微重写您的查询,我们会得到:

SELECT COUNT(user) count_user
FROM [bi.table]
WHERE  timestamp > DATE_ADD(CURRENT_TIMESTAMP(), -15, 'MINUTE')
and column1 is null

根据 API,您还可以使用:

and isnull(column1)

你也可以使用:

and isnull(column1)

你也可以使用:

and isempty(column1)

你也可以使用:

and column1=''

这是使用 Microsoft 的知识库文章谈论 isnull(column1) 或 colum1 is null 之间的区别..

另外,对于 SQL server.. 你可以使用 Locking Hints..

FROM [bi.table] (NOLOCK)

但是,我不熟悉 Google API...所以,这些只是建议。

【讨论】:

我不认为这是错误的原因,但是,我将修改我们的查询。非常感谢! @Leptonator 请记住:SELECT COUNT(*).. 必须进行巨大的表扫描。如果您选择始终填充的列,则可以更有效地利用资源。锁定提示也很有帮助。您可以执行此操作的另一种方法是在非空“column1”记录集中创建一个视图,然后将您的计数基于从那里开始的最后 15 分钟。 COUNT() 不会扫描整个表。不鼓励这样做,因为当涉及重复字段时,它可能会返回意外结果。这就是为什么您应该尽可能考虑计算特定字段的原因。但是,COUNT() 不会对扫描的字段数产生不利影响。事实上,正如定价页面 (cloud.google.com/bigquery/pricing) 中所述,查询“SELECT COUNT(*) FROM table”处理零字节。 这个答案与问题并没有太大关系,而且关于 BigQuery 也被证明是不正确的(正如@DanDelorey 所解释的)

以上是关于BigQuery:发生内部错误,请求无法完成的主要内容,如果未能解决你的问题,请参考以下文章

Google BigQuery 内部错误

Big Query 返回的内部错误

具有编辑距离的BigQuery查询UDF引发错误

BigQuery 导出/复制内部错误

Bigquery 返回内部错误 503:23 列 X 600,00 行

StoreFront无法完成您的请求,事件ID17错误