Google bigquery api没有列出历史工作

时间:2017-12-10 04:26:45

标签: python json google-bigquery gcloud google-apis-explorer

任何想法为什么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()

1 个答案:

答案 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环境中使用)。