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:发生内部错误,请求无法完成的主要内容,如果未能解决你的问题,请参考以下文章