要解决问题“BigQuery的getQueryResults始终返回相同的pageToken”,您可以使用循环调用getQueryResults
方法来获取所有结果。以下是一个示例代码:
from google.cloud import bigquery
def get_all_results(query, project_id):
client = bigquery.Client(project=project_id)
job = client.query(query)
results = []
page_token = None
while True:
# 设置page_token参数,以获取下一页结果
job_config = bigquery.QueryJobConfig(page_token=page_token)
query_results = client.get_query_results(job, job_config=job_config)
# 处理当前页的结果
for row in query_results:
results.append(row)
# 获取下一页的page_token
page_token = query_results.next_page_token
if not page_token:
# 如果没有下一页,则退出循环
break
return results
# 示例用法
query = "SELECT * FROM `your_dataset.your_table`"
project_id = "your_project_id"
results = get_all_results(query, project_id)
# 处理结果
for row in results:
print(row)
在上述代码中,我们使用循环来连续调用getQueryResults
方法,并将每页的结果追加到results
列表中。当没有下一页时,循环终止。最后,您可以处理results
列表中的所有结果。