使用“列表”检索 BigQuery 的 queryResult 只得到 512 条记录

Posted

技术标签:

【中文标题】使用“列表”检索 BigQuery 的 queryResult 只得到 512 条记录【英文标题】:Using "List" to retrieve queryResult of BigQuery only got 512 records 【发布时间】:2013-03-27 03:21:45 【问题描述】:

queryResult显示有13224行,然后我用了

List<TableRow> rows = queryResult.getRows();

然后它显示列表“行”只有 512 行。

有什么帮助吗?

【问题讨论】:

你是怎么知道它有 13224 行的?是 getTotalRows() 吗? 是的,我使用了两种方式:我使用了 getTotalRows,并且我还去了 bigquery 网站并在那里进行了直接查询,它也返回了相同数量的结果。 文档没有说明 getRows 方法中的行限制,因此 getTotalRow 调用的值应该是返回列表的大小...抱歉,对此无能为力。 谢谢你:) 你能指点我的文档吗?谢谢 看看这里:***.com/questions/14570761/… 【参考方案1】:

如果行很大或数量很多,您可能无法取回所有行。您可以通过调用 jobs.GetQUeryResults() 或 tabledata.List() 来获取剩余的行,并带有相应的偏移量。

来自https://developers.google.com/bigquery/docs/queries:

    使用您的查询字符串调用jobs.query。此方法需要一个可选的超时时间;如果设置为 0 或未指定,该方法将默认为 10 秒。 如果查询在指定的超时时间内返回,该方法将返回第一页结果。如需其他结果,请调用 jobs.getQueryResults,如下所述。 如果在查询完成之前查询超时到期,该方法将返回 jobComplete=false,并且您必须按照接下来的描述调用 jobs.getQueryResults。即使在超时期限之后,查询作业仍将继续运行,直到它完成,无论是成功还是发生错误。 [如有必要] 调用 jobs.getQueryResults 以分页浏览其他结果,从超过其超时的查询中获取结果,或检查任何查询结果,直到临时表被删除。此方法可让您指定起始行,并采用与作业相同的超时。查询超时以允许在作业尚未完成时等待。

【讨论】:

【参考方案2】:

我认为你必须使用结果集对象来获取行。 result_set.getString() 方法用于获取行的属性。

【讨论】:

以上是关于使用“列表”检索 BigQuery 的 queryResult 只得到 512 条记录的主要内容,如果未能解决你的问题,请参考以下文章

根据唯一 ID 列表删除 Big Query 表中的批量行

如何使用 dbapi 将值列表插入 BigQuery 表

在 Big Query 中检索覆盖的已保存查询

使用 Python Pycharm 在 Big Query 中查询公共数据集

用于读取记录数组的 BigQuery Java API:“不支持按名称检索字段值”异常

循环遍历 Excel Power Query 中的 Json 列表以检索记录