任何想法为什么jobs.list()只返回今天的工作?如果我打印变量t它只提供我今天运行的工作。我应该怎么做才能获得更多的历史,比如90天?
credentials = GoogleCredentials.get_application_default()
# Construct the service object for interacting with the BigQuery API.
bigquery_service = build('bigquery', 'v2', credentials=credentials)
t=bigquery_service.jobs().list(projectId=project_id,allUsers=True,
projection='full',stateFilter=job_state.lower()).execute()
答案 0 :(得分:1)
这是因为您没有迭代页面结果。将代码调整为:
credentials = GoogleCredentials.get_application_default()
service = build('bigquery', 'v2', credentials=credentials)
results = []
t=service.jobs().list(projectId=project_id,allUsers=True,
projection='full',stateFilter=job_state.lower()).execute()
results.append(t['jobs'])
while t.get('nextPageToken') is not None:
t=service.jobs().list(projectId=project_id,
allUsers=True,
projection='full',
stateFilter=job_state.lower(),
pageToken=t.get("nextPageToken")).execute()
if t.get('jobs'):
results.append(t['jobs'])
这应使用pageToken
迭代网页,并将回复追加到results
。
您也可以使用python google-cloud-api,这些操作已经自动处理(但是如果您使用它,它将无法在AppEngine Standard环境中使用)。