bigquery-client 0.3.2 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9a86e09fec3bb6175a2d99264a10a139b742f14c
4
- data.tar.gz: 475d160a52fbf704d02d34ceaaaaf689e6286ae0
3
+ metadata.gz: 62916ca2e9ee1f90227ea2f2e67c9cd4f26c316d
4
+ data.tar.gz: f763e852a5747075a16c6a33c6c9287d3ee8d577
5
5
  SHA512:
6
- metadata.gz: 331ef756470a6586af5eb37dee614532cf1df20873fae4c12dff16207b2c087b17092771c26007137bdffac43dfc8556d550979286ab1b0be3087388109eb610
7
- data.tar.gz: 960d58359bfd5a9687ca9a313be7a963f113fe2c948dde6f765e07199548ca93cda707332fc588ec9cc3748572ec1cafb748647495ee2ab0f12cd1ac4fcb8a13
6
+ metadata.gz: 383fd4cd1bfe5903d6689eafd06478ebd43441f2ddf61c24901e108c5e590c7f338122d59e3c95f01f1bafd57da8817efe794f8129af39b6190243a39b8f27fc
7
+ data.tar.gz: fe4db299be123fe3c5b7c7310a1d79d4bcd53456a98d8e780085b27cef6ba32b4c23bb46135b8fea04c4ebe5084464e880083a7ad740ed8cdfe5099afa5f3404
@@ -3,10 +3,20 @@
3
3
  module BigQuery
4
4
  module Jobs
5
5
  def sql(query, options = {})
6
- result = jobs_query(query, options)
7
- names = result['schema']['fields'].map {|field| field['name'] }
8
- types = result['schema']['fields'].map {|field| field['type'] }
9
- records = (result['rows'] || []).map {|row| row['f'].map {|record| record['v'] } }
6
+ jobs_query_response = jobs_query(query, options)
7
+ names = jobs_query_response['schema']['fields'].map {|field| field['name'] }
8
+ types = jobs_query_response['schema']['fields'].map {|field| field['type'] }
9
+ records = extract_records(jobs_query_response)
10
+
11
+ page_token = jobs_query_response['pageToken']
12
+ job_id = jobs_query_response['jobReference']['jobId']
13
+ inherited_options = options.select {|k,v| [:maxResults, :timeoutMs].include?(k) }
14
+ while page_token
15
+ query_results_response = query_results(job_id, inherited_options.merge({ pageToken: page_token }))
16
+ records += extract_records(query_results_response)
17
+ page_token = query_results_response['pageToken']
18
+ end
19
+
10
20
  convert(records, types).map { |values| [names, values].transpose.to_h }
11
21
  end
12
22
 
@@ -52,6 +62,10 @@ module BigQuery
52
62
 
53
63
  private
54
64
 
65
+ def extract_records(response)
66
+ (response['rows'] || []).map {|row| row['f'].map {|record| record['v'] } }
67
+ end
68
+
55
69
  def convert(records, types)
56
70
  records.map do |values|
57
71
  values.map.with_index do |value, index|
@@ -1,5 +1,5 @@
1
1
  module BigQuery
2
2
  class Client
3
- VERSION = '0.3.2'
3
+ VERSION = '0.3.3'
4
4
  end
5
5
  end
@@ -1,7 +1,7 @@
1
1
  require 'helper'
2
2
 
3
3
  class JobsTest < Test::Unit::TestCase
4
- @@query = <<-"EOS"
4
+ @@normal_query = <<-"EOS"
5
5
  SELECT
6
6
  born_alive_alive, mother_residence_state, is_male
7
7
  FROM
@@ -23,8 +23,17 @@ class JobsTest < Test::Unit::TestCase
23
23
  0
24
24
  EOS
25
25
 
26
+ @@huge_result_query = <<-"EOS"
27
+ SELECT
28
+ title
29
+ FROM
30
+ publicdata:samples.wikipedia
31
+ LIMIT
32
+ 1234567
33
+ EOS
34
+
26
35
  def test_sql
27
- result = $client.sql(@@query)
36
+ result = $client.sql(@@normal_query)
28
37
  assert { result.size == 100 }
29
38
  assert { result.sample["born_alive_alive"].is_a? Fixnum }
30
39
  assert { result.sample["mother_residence_state"].is_a? String }
@@ -35,4 +44,9 @@ class JobsTest < Test::Unit::TestCase
35
44
  result = $client.sql(@@no_rows_query)
36
45
  assert { result == [] }
37
46
  end
47
+
48
+ def test_sql_pagination
49
+ record_size = $client.sql(@@huge_result_query, maxResults: 10000).size
50
+ assert { record_size == 1234567 }
51
+ end
38
52
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bigquery-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tsukuru Tanimichi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-12 00:00:00.000000000 Z
11
+ date: 2015-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-api-client