Python 2.7 在python中从大型BigQuery表获取数据
我拥有的是一个BigQuery表(>5mil行) 我需要批量获取这些数据,并在python的AppEngine中对其进行处理 从我知道的表中获取数据的唯一方法是对该表运行SELECT查询,然后使用令牌fetch\ U data returns迭代结果 看起来是这样的:Python 2.7 在python中从大型BigQuery表获取数据,python-2.7,google-app-engine,google-bigquery,Python 2.7,Google App Engine,Google Bigquery,我拥有的是一个BigQuery表(>5mil行) 我需要批量获取这些数据,并在python的AppEngine中对其进行处理 从我知道的表中获取数据的唯一方法是对该表运行SELECT查询,然后使用令牌fetch\ U data returns迭代结果 看起来是这样的: query = u"""\ SELECT url FROM %s """ % (query_table) query_job = client.run_async_query(str(uuid.uuid4()),
query = u"""\
SELECT url FROM %s
""" % (query_table)
query_job = client.run_async_query(str(uuid.uuid4()), query)
query_job.begin()
wait_for_job(query_job, 1)
query_results = query_job.results()
rows, total_rows, next_token = query_results.fetch_data(max_results=per_page, page_token=page_token)
这适用于较小的表,但对于像我这样的较大表,它要求允许较大的请求并指定目标表。但这对我来说毫无意义。为了简单地从一个表中获取数据,我必须将它复制到另一个表中。您应该使用API从表中获取数据。使用(startIndex或pageToken)和maxResults,您可以控制所获取页面的大小 中描述了您遇到的问题。总之,除了一次可以获取多少数据的限制之外,还有一个点是您的结果会变成“大结果”。这就是当您的结果压缩到128MB以上时,如前所述。当结果分类为“大”时,只能将查询结果存储在“大查询”中的表中
不幸的是,我不确定是否有一种好的方法可以在不减少一次检索的行数的情况下执行您想要的操作。您可能需要做的是探索大查询的方法。我认为这正是您需要的,据我所知,您无法从查询中获得大的结果,但您可以将整个表数据获取到应用程序中,无论它有多大,这就是为什么你需要把大的结果放在一个表中,然后把这个表数据放到你的应用程序中,然后用它做任何你想做的事情 祝你好运:)