【问题标题】:Google Bigquery json API, pageToken has no effect谷歌 Bigquery json API,pageToken 无效
【发布时间】:2014-08-22 03:32:37
【问题描述】:

我正在尝试实现 bigquery 的 JSON api (v2)。在我的代码中,我得到与documentation page for tabledata-list

相同的行为

我的表格大小约为 11.000 行。在文档页面中,我填写以下参数:

  • ProjectId = X
  • DatasetId = Y
  • TableId = Z
  • MaxResults = 10000 #我想对结果进行分页

这将返回 10.000 行和一个 pageToken。所以我做了同样的请求,现在我设置了页面令牌,以便获得下一页结果。

这将返回与以前相同的 10.000 行。我希望这会按照this page 中的描述进行分页:

在某些情况下,所有 collection.list 方法都会返回分页结果。每页的结果数由 maxResults 属性控制

一个页面是总行数的一个子集。如果您的结果是多页数据,则结果数据将具有 nextPageToken 属性。要检索下一页结果,请进行另一个列表调用并将令牌值包含为名为 pageToken 的 URL 参数。

我哪里出错了?

编辑:

我的同事向我指出,在其他文档页面上,结果包含 nextPageToken,但响应包含 pageToken。区别在于pageToken 指的是当前页面,nextPageToken 指的是下一页。

但是文档声明它应该返回一个nextPageToken(除非没有更多数据)。但是len(table) > len(result)

【问题讨论】:

    标签: json pagination google-bigquery


    【解决方案1】:

    same page it's mentioned 上,TableData.List() 调用有区别

    bigquery.tabledata.list 方法,用于分页 表数据,使用行偏移值或页标记。

    所以对于TableData.List(),您必须使用行偏移值来分页,并且为了访问以前的页面,您可以使用会话中的哈希值。这是因为在大容量和大数据的情况下,您无法从工作器池中预缓存下一组数据。

    您可以通过使用每个页面右上角的链接来帮助改进文档:Feedback on this document随时使用该链接进行改进。

    您也可以将问题提交给https://code.google.com/p/google-bigquery/issues/list

    【讨论】:

    • 它说“使用行偏移值或页面标记”。我一直在使用原始 HTTP 调用和 pageTokens 使用 tableData.list() 进行没有行偏移的分页。要么是 json API 有问题,要么是 Sjuul 是如何使用它的。 BQ API 浏览器中的分页似乎也很好。
    • @Pentium10 我想我不完全明白。为什么我没有得到 nextPageToken?我以不同的方式阅读了您的报价。对我来说,它显示我应该能够使用页面标记进行分页。我不确定提交问题列表是否有用。他们还没有回复我的上一个问题。大约一个月前。
    • @SjuulJanssen 读了两遍,英文是正确的。它以偏移值向前分页,并且只能以页面标记向后分页。
    • @Pentium10 你在哪里看到的?我找不到它
    【解决方案2】:

    不幸的是,TableData.List() 返回的包含逻辑“下一页标记”的字段实际上命名为“pageToken”,而不是“nextPageToken”。

    其他 API,如 Datasets.List(),返回一个字面名称为“nextPageToken”的字段,其中包含逻辑“下一页令牌”。

    这是一种命名不一致的情况,但希望这有助于消除一些混乱。

    【讨论】:

      猜你喜欢
      • 2012-05-13
      • 1970-01-01
      • 2021-11-20
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      相关资源
      最近更新 更多