2017-12-10 44 views
1

今日の仕事を返すjobs.list()の理由は何ですか?変数tを出力すると、今日実行されたジョブだけが提供されます。 90日という、もっと歴史を得るためにはどうしたらよいですか?Google bigquery apiに過去のジョブが表示されない

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

これは、ページの結果を反復処理していないために発生します。

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環境では機能しません)。

+0

これは機能しました。ありがとうございました –

関連する問題