🖥

google-api-ruby-client | GoogleCloud.client.bigquery.query でデフォルト制限を越え

2023/08/26に公開

問題

普通にクエリを発行すると、全レコードが得られなかったりする。

大きなレコード数のあるテーブル。

GoogleCloud.client.bigquery.query('SELECT * FROM bq_dataset.table_name')
# => [{"rows"=>10601344}]

だがクエリを発行すると、すべての結果が得られない。

records = GoogleCloud.client.bigquery.query('SELECT * FROM bq_dataset.table_name LIMIT 100000')
records.size # => 35000

何故か中途半端な数字で返ってくる。
元のテーブルによって得られるレコード数が違う。バイト数制限とか?

解決

.all を付ける。
配列ではなくオブジェクトで返ってくるようになるので注意。

records = GoogleCloud.client.bigquery.query('SELECT * FROM bq_dataset.table_name LIMIT 100000').all
records.to_a.size # => 100000

環境

  • ruby 2.3.1
  • google-api-client (0.9.13)

参考

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2016-11-22

Discussion