【发布时间】:2017-12-10 01:17:24
【问题描述】:
我在 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 输入中给出的用户的作业比这更好?
【问题讨论】:
-
不确定这是否是复制和粘贴错误,但您在示例中执行了两次
list_jobs,这不是必需的。您的列表理解可以写成[job for job in jobs if ...]在这里就好了,使用您已有的响应。 -
这只是一个复制粘贴的东西。感谢您的回答,它有效
-
实际上,使用 pandas 数据帧更快,而不是获取列表中的作业并逐个处理。
-
那么为什么不添加您的解决方案作为答案呢?回答你自己的问题并接受你自己的答案是完全可以接受的,尤其是考虑到还没有其他答案。指出问题中代码的性能增益的奖励积分。您也可以删除您的问题,但您已经获得了赞成票,因此最好用您的解决方案来回答,而不是将其保留为未解决。