2017-12-10 19 views
1

私はPythonで大きなクエリジョブアプリケーションを実装し、アプリケーションエンジンにデプロイしました。入力として入力されたユーザメールだけをフィルタリングする、以下のフィルタの効率を上げる助けが必要ですPythonイテレータの高速化

credentials = GoogleCredentials.get_application_default() 
bq_conn= discovery.build('bigquery', 'v2', credentials=credentials) 

job_query_dict = []  


###Create the big query client 
client =bigquery.Client(project=project_id) 


###List the jobs in the client 
jobs = client.list_jobs(all_users=True) # API request 
print([job for job in list(client.list_jobs(all_users=True)) if job.user_email==user_email][0]) 

user_email入力で指定したユーザーのジョブをこれよりも印刷するにはどうすればよいですか。パンダのデータフレームとしてジョブデータへのアクセス

+0

これは、コピー&ペーストの間違いであるかどうかわからないからアクセスするよりだったが、あなたは必要ありませんあなたの例で二度 'list_jobs'を実行しています。あなたのリストの理解度は、あなたがすでに持っている応答を使って、 'ここでうまくいくとすれば、仕事の仕事は...]と書くことができます。 – bgse

+0

それは単なるコピー貼りのものでした。答えがありがとう –

+0

実際には、pandas dataframeを使用すると、リスト内のジョブを取得して1つずつ処理するより速くなりました。 –

答えて

0

は速くリスト

t=bigquery_service.jobs().list(projectId=project_id,allUsers=True,projection='full',stateFilter=job_state.lower()).execute() 
try: 
    tab = pd.DataFrame(t['jobs'])  
except: 
    return "No jobs"