Google bigquery BigQueryJava:QueryResponse和GetQueryResultsResponse之间的区别

Google bigquery BigQueryJava:QueryResponse和GetQueryResultsResponse之间的区别,google-bigquery,Google Bigquery,在Google提供的中,有2个类用于获取结果。QueryResponse和GetQueryResultsResponse。 我无法理解这两个课程的目的,我们是否必须使用这两个课程? 我们同时从以下两个方面获取数据:queryResponse.getRows()和queryResults.getRows() 我已经看过了,但想不出来。这两个类之间的区别是什么?使用哪一个更好?这两个结果实际上是相同的(事实上,它们在原始HTTP请求中是相同的)。区别在于你如何得到它们 QueryResponse由j

在Google提供的中,有2个类用于获取结果。QueryResponse和GetQueryResultsResponse。 我无法理解这两个课程的目的,我们是否必须使用这两个课程? 我们同时从以下两个方面获取数据:queryResponse.getRows()和queryResults.getRows()


我已经看过了,但想不出来。这两个类之间的区别是什么?使用哪一个更好?

这两个结果实际上是相同的(事实上,它们在原始HTTP请求中是相同的)。区别在于你如何得到它们

QueryResponse由jobs.query()返回。此方法可用于运行查询,但配置选项有限。这是一个方便的功能。有关更多查询选项(例如设置目标表、允许大结果等),请使用jobs.insert()。jobs.query()的另一个限制是它可能在查询完成之前超时。部分原因是,许多客户端(如AppEngine中的客户端)要求所有HTTP请求在30秒内完成。如果jobs.query()超时,它仍将报告一个作业id,该id可用于获取jobs.get\u query\u results()的结果

GetQueryResultsResponse由作业返回。get\u query\u results()。这可用于获取由jobs.query()或jobs.insert()启动的查询的结果。查询结果(如果未指定目标表)在查询完成后24小时内可用。jobs.get\u query\u results()允许您随时获取这些结果。jobs.query()只提供一次查询结果

两者之间还有一个区别,那就是jobs.query()只返回结果的第一页。jobs.get\u query\u results()可用于获取多页结果


希望这能澄清一些问题。

谢谢Jordan。因此,如果我理解正确,jobs().getQueryResults(..)只是获取结果,而不是执行查询。因此,如果我想执行一个查询,我必须使用jobs().query(..),然后还有一个问题,假设我想获得信息:TotalBytesProcessed,TotalRows,is cahceHit。。我应该使用“QueryResponse”还是“GetQueryResultsResponse”?或者这没关系,两者都会给出相同的值?是的,没错。。。getQueryResults不执行查询。query()和getQueryResults()都返回总行数,但只有query()返回已处理的字节数(您也可以从jobs.get()获取该信息)。