Bigquery API 间歇性地返回 http 错误 400 "Bad Request"



对于一个特定的查询,我间歇地得到http错误400返回,但是当我检查查询的文本时,它似乎是正确的,如果我然后将查询复制到Bigquery GUI并运行它,它执行没有任何问题。该查询是在node.js中构造的,并通过gcloud node.js api提交。我收到的响应(其中包含查询的文本)太大,无法在这里发布,但我确实有路径名:

"pathname":"/bigquery/v2/projects/rising-ocean-426/queries/job_aSR9OCO4U_P51gYZ2xdRb145YEA"

这个错误似乎只有在查询中包含live_seconds_viewed计算时才会发生。如果包含live_seconds_viewed计算的任何部分,则查询会间歇性地失败。

该字段的初始计算为:

CASE WHEN event = 'video_engagement'
     AND range IS NULL
     AND INTEGER(video_seconds_viewed) > 0
     THEN 10
     ELSE 0 END AS live_seconds_viewed,

有时我可以简单地通过改变表达式的顺序来执行查询。但是,它也是断断续续的。

如果有任何帮助,我将不胜感激

经过长时间艰苦的试验和错误后,我确定查询失败的原因仅仅是查询的字符串长度太长。当从GUI执行查询时,显然空白被删除,因此查询执行,因为没有空白,它足够短,可以通过大小限制。

当我操纵查询以确定是哪个部分或哪些部分导致了问题时,我会无意中将查询的大小减小到临界限制以下,并导致查询通过。

如果Bigquery的错误响应包含一些提示问题所在,而不是触发一个400错误的坏请求并退出,那就太好了。

如果Bigquery解析器在确定查询大小时忽略空白,那就更好了。这样,GUI上的行为将与通过API提交查询时的行为相匹配。

相关内容

  • 没有找到相关文章

最新更新