BigQuery - 只能获取100,000条记录

时间:2017-12-18 19:10:55

标签: ruby google-bigquery

我有一张约有50,000,000条记录的表格。 我想获取整个表格的一列

SELECT id FROM `project.dataset.table`

在Web控制台中运行此代码大约需要80秒。

然而,当使用Ruby Gem执行此操作时,我限制为每个查询仅获取100,000条记录。使用#next方法,我可以访问下一个100,000条记录。

require "google/cloud/bigquery"

@big_query = Google::Cloud::Bigquery.new(
  project: "project",
  keyfile: "keyfile"
)

@dataset = @big_query.dataset("dataset")
@table   = @dataset.table("table")

queue = @big_query.query("SELECT id FROM `project.dataset.table`", max: 1_000_000)
stash = queue

loop do
  queue = queue.next
  unless queue
    break
  else
    O.timed stash.size
    stash += queue
  end
end

问题在于每个请求大约需要30秒。 max: 1_000_000是没用的,我被困在10万。这种方式查询需要4个小时,这是不可接受的。

我做错了什么?

1 个答案:

答案 0 :(得分:2)

你应该做一个导出工作,这样你就可以在GCS上拥有文件了。 然后从那里下载很容易。

https://cloud.google.com/bigquery/docs/exporting-data

Ruby示例https://github.com/GoogleCloudPlatform/google-cloud-ruby/blob/master/google-cloud-bigquery/lib/google/cloud/bigquery.rb

相关问题