我所拥有的是BigQuery表(> 5mil行)。
我需要批量获取这些数据并在AppEngine,python中处理它。
从我知道的表中获取的唯一方法是在此表上运行SELECT查询,然后使用tokens fetch_data返回迭代结果。
看起来像这样:
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)
这适用于较小的表,但在较大的表上,它要求允许大请求并指定目标表。但这对我来说毫无意义。为了简单地从表中获取数据,我必须将其复制到另一个表中?
答案 0 :(得分:1)
this documentation中描述了您遇到的问题。总之,除了一次可以获取多少数据的限制之外,还有一点是您的结果会变成“大结果”。这是当你的结果压缩超过128MB时所描述的here。当您的结果被分类为大型时,您只能将查询结果存储在Big Query中的表中。
不幸的是,我不确定有什么好方法可以做你想要的,而不会减少你一次检索的行数。您可能需要做的是探索exporting data documentation进行大查询。
答案 1 :(得分:0)
您应该使用tabledata.list API从表中获取数据 使用parameters(startIndex或pageToken)和maxResults,您可以控制要获取的页面大小。
答案 2 :(得分:0)
我认为这正是您所需要的link,据我所知,您无法获得查询的大量结果,但您可以将整个表数据提供给您的应用程序,无论它有多大,这就是为什么你需要将大结果放在一个表中,然后将这个表数据提供给你的应用程序,并用它做任何你想做的事情
祝你好运:)