gpt4 book ai didi

python - 如何使用 Google BigQuery python API 获得超过 100,000 个响应结果?

转载 作者:行者123 更新时间:2023-11-30 22:39:58 26 4
gpt4 key购买 nike

现在,我使用此脚本通过 python API 请求 Big Query:

import argparse
from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from oauth2client.client import GoogleCredentials
credentials = GoogleCredentials.get_application_default()
bigquery_service = build('bigquery', 'v2', credentials=credentials)

def request(query):
query_request = bigquery_service.jobs()
query_data = {'query':query, 'timeoutMs':100000}
query_response = query_request.query(projectId=project, body=query_data).execute()
return query_response

query = """
select domain
from
[logs.compressed_v40_20170313]
limit 150000"""

respond = request(query)

我得到了结果:

print respond['totalRows']  # total number of lines in respond 
u'150000'

print len(respond['raws]) # actual number of lines
100000

问题:如何接收剩余的50,000行?

最佳答案

要在第一页结果之后获取更多结果,您需要调用 getQueryResults .

就您而言,您需要从 query 获取作业 ID 和页面 token 回应。

query_response = query_request.query(projectId=project, body=query_data).execute()
page_token = query_response['pageToken']
job_id = query_response['jobReference']['jobId']
next_page = bigquery_service.jobs().getQueryResults(
projectId=project, jobId=job_id, pageToken=page_token)

继续循环,直到获得所有查询结果。

注意:对查询的调用可能会超时,但查询仍将在后台运行。我们建议您创建显式作业 ID 并手动插入作业,而不是使用查询方法。

请参阅"async" query sample 。注意:这不是正确的名称,因为此示例确实等待查询完成。

关于python - 如何使用 Google BigQuery python API 获得超过 100,000 个响应结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42982018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com