【问题标题】:GCP Bigquery Pagination PythonGCP Bigquery 分页 Python
【发布时间】:2021-09-14 17:56:45
【问题描述】:

我创建了一个自定义 API,用于从 GCP BigQuery 获取数据。我的应用程序在 Cloud Run 上运行,并且使用了 API Gateway。如何为 API 应用分页。我在那个 URL 上做“POST”请求 https://xxxxxxxxxx/data?start=20210101&end=20210731 代码示例如下:

from google.cloud import bigquery
client = bigquery.Client()
query_res = client.query(query)
query_res.result()
destination = query_res.destination
rows = client.list_rows(destination, max_results=10000, page_size=10000)
for row in rows:
    print(row)

它只给了我前 10000 条记录。如何获取下一页/所有页面的记录?

【问题讨论】:

  • 您还需要页面令牌。
  • @guillaumeblaquiere 是的,我想从哪里获取页面令牌。
  • 您要执行新请求以获取下一个 10000 个元素吗?你期望你的网址中有page_token吗?类似&nextpage=<token>?
  • 是的,我想获得下一个 10000 个元素。是请求标头中的令牌。如何获取下一页的令牌?我正在使用 POSTMAN 发送请求。谢谢。

标签: python google-cloud-platform google-bigquery


【解决方案1】:

由于您使用无服务器,无法将数据结果保存在内存中,您需要再次执行对 BigQuery 的查询。

但是,因为它是完全相同的查询,您将重复使用该案例,因此结果将是即时且免费的。

我推荐你使用start_index参数

 rows = client.list_rows(destination, start_index=10000, page_size=10000)

在查询参数中提供起始索引,或页码(页面大小的倍数)。

注意你的max结果没用,页面大小就够了

【讨论】:

  • 谢谢,有帮助。我使用了“start_index”和“max_results”。
猜你喜欢
  • 2023-03-16
  • 1970-01-01
  • 2013-06-01
  • 2021-03-25
  • 1970-01-01
  • 2020-03-18
  • 1970-01-01
  • 2022-12-18
  • 1970-01-01
相关资源
最近更新 更多