google-cloud-bigquery 1.12.0 → 1.38.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/AUTHENTICATION.md +9 -28
  3. data/CHANGELOG.md +372 -1
  4. data/CONTRIBUTING.md +328 -116
  5. data/LOGGING.md +2 -2
  6. data/OVERVIEW.md +21 -20
  7. data/TROUBLESHOOTING.md +2 -8
  8. data/lib/google/cloud/bigquery/argument.rb +197 -0
  9. data/lib/google/cloud/bigquery/convert.rb +154 -170
  10. data/lib/google/cloud/bigquery/copy_job.rb +40 -23
  11. data/lib/google/cloud/bigquery/credentials.rb +5 -12
  12. data/lib/google/cloud/bigquery/data.rb +109 -18
  13. data/lib/google/cloud/bigquery/dataset/access.rb +322 -51
  14. data/lib/google/cloud/bigquery/dataset/list.rb +7 -13
  15. data/lib/google/cloud/bigquery/dataset.rb +960 -279
  16. data/lib/google/cloud/bigquery/external/avro_source.rb +107 -0
  17. data/lib/google/cloud/bigquery/external/bigtable_source/column.rb +404 -0
  18. data/lib/google/cloud/bigquery/external/bigtable_source/column_family.rb +945 -0
  19. data/lib/google/cloud/bigquery/external/bigtable_source.rb +230 -0
  20. data/lib/google/cloud/bigquery/external/csv_source.rb +481 -0
  21. data/lib/google/cloud/bigquery/external/data_source.rb +771 -0
  22. data/lib/google/cloud/bigquery/external/json_source.rb +170 -0
  23. data/lib/google/cloud/bigquery/external/parquet_source.rb +148 -0
  24. data/lib/google/cloud/bigquery/external/sheets_source.rb +166 -0
  25. data/lib/google/cloud/bigquery/external.rb +50 -2256
  26. data/lib/google/cloud/bigquery/extract_job.rb +217 -58
  27. data/lib/google/cloud/bigquery/insert_response.rb +1 -3
  28. data/lib/google/cloud/bigquery/job/list.rb +13 -20
  29. data/lib/google/cloud/bigquery/job.rb +286 -11
  30. data/lib/google/cloud/bigquery/load_job.rb +801 -133
  31. data/lib/google/cloud/bigquery/model/list.rb +5 -9
  32. data/lib/google/cloud/bigquery/model.rb +247 -16
  33. data/lib/google/cloud/bigquery/policy.rb +432 -0
  34. data/lib/google/cloud/bigquery/project/list.rb +6 -11
  35. data/lib/google/cloud/bigquery/project.rb +526 -243
  36. data/lib/google/cloud/bigquery/query_job.rb +584 -125
  37. data/lib/google/cloud/bigquery/routine/list.rb +165 -0
  38. data/lib/google/cloud/bigquery/routine.rb +1227 -0
  39. data/lib/google/cloud/bigquery/schema/field.rb +413 -63
  40. data/lib/google/cloud/bigquery/schema.rb +221 -48
  41. data/lib/google/cloud/bigquery/service.rb +186 -109
  42. data/lib/google/cloud/bigquery/standard_sql.rb +269 -53
  43. data/lib/google/cloud/bigquery/table/async_inserter.rb +86 -42
  44. data/lib/google/cloud/bigquery/table/list.rb +6 -11
  45. data/lib/google/cloud/bigquery/table.rb +1188 -326
  46. data/lib/google/cloud/bigquery/time.rb +6 -0
  47. data/lib/google/cloud/bigquery/version.rb +1 -1
  48. data/lib/google/cloud/bigquery.rb +18 -8
  49. data/lib/google-cloud-bigquery.rb +15 -13
  50. metadata +67 -40
@@ -34,9 +34,12 @@ module Google
34
34
  # "WHERE time_of_date = @time",
35
35
  # params: { time: fourpm }
36
36
  #
37
+ # # Iterate over the first page of results
37
38
  # data.each do |row|
38
39
  # puts row[:name]
39
40
  # end
41
+ # # Retrieve the next page of results
42
+ # data = data.next if data.next?
40
43
  #
41
44
  # @example Create Time with fractional seconds:
42
45
  # require "google/cloud/bigquery"
@@ -49,9 +52,12 @@ module Google
49
52
  # "WHERE time_of_date >= @time",
50
53
  # params: { time: precise_time }
51
54
  #
55
+ # # Iterate over the first page of results
52
56
  # data.each do |row|
53
57
  # puts row[:name]
54
58
  # end
59
+ # # Retrieve the next page of results
60
+ # data = data.next if data.next?
55
61
  #
56
62
  Time = Struct.new :value
57
63
  end
@@ -16,7 +16,7 @@
16
16
  module Google
17
17
  module Cloud
18
18
  module Bigquery
19
- VERSION = "1.12.0".freeze
19
+ VERSION = "1.38.1".freeze
20
20
  end
21
21
  end
22
22
  end
@@ -51,6 +51,8 @@ module Google
51
51
  # @param [Integer] retries Number of times to retry requests on server
52
52
  # error. The default value is `5`. Optional.
53
53
  # @param [Integer] timeout Default timeout to use in requests. Optional.
54
+ # @param [String] endpoint Override of the endpoint host name. Optional.
55
+ # If the param is nil, uses the default endpoint.
54
56
  # @param [String] project Alias for the `project_id` argument. Deprecated.
55
57
  # @param [String] keyfile Alias for the `credentials` argument.
56
58
  # Deprecated.
@@ -64,27 +66,25 @@ module Google
64
66
  # dataset = bigquery.dataset "my_dataset"
65
67
  # table = dataset.table "my_table"
66
68
  #
67
- def self.new project_id: nil, credentials: nil, scope: nil, retries: nil,
68
- timeout: nil, project: nil, keyfile: nil
69
- project_id ||= (project || default_project_id)
69
+ def self.new project_id: nil, credentials: nil, scope: nil, retries: nil, timeout: nil, endpoint: nil,
70
+ project: nil, keyfile: nil
70
71
  scope ||= configure.scope
71
72
  retries ||= configure.retries
72
73
  timeout ||= configure.timeout
74
+ endpoint ||= configure.endpoint
73
75
  credentials ||= (keyfile || default_credentials(scope: scope))
74
76
 
75
77
  unless credentials.is_a? Google::Auth::Credentials
76
78
  credentials = Bigquery::Credentials.new credentials, scope: scope
77
79
  end
78
80
 
79
- if credentials.respond_to? :project_id
80
- project_id ||= credentials.project_id
81
- end
82
- project_id = project_id.to_s # Always cast to a string
81
+ project_id = resolve_project_id(project_id || project, credentials)
83
82
  raise ArgumentError, "project_id is missing" if project_id.empty?
84
83
 
85
84
  Bigquery::Project.new(
86
85
  Bigquery::Service.new(
87
- project_id, credentials, retries: retries, timeout: timeout
86
+ project_id, credentials,
87
+ retries: retries, timeout: timeout, host: endpoint, quota_project: configure.quota_project
88
88
  )
89
89
  )
90
90
  end
@@ -100,6 +100,8 @@ module Google
100
100
  # the keyfile as a String, the contents of the keyfile as a Hash, or a
101
101
  # Google::Auth::Credentials object. (See {Bigquery::Credentials}) (The
102
102
  # parameter `keyfile` is considered deprecated, but may also be used.)
103
+ # * `endpoint` - (String) Override of the endpoint host name, or `nil`
104
+ # to use the default endpoint.
103
105
  # * `scope` - (String, Array<String>) The OAuth 2.0 scopes controlling
104
106
  # the set of resources and operations that the connection can access.
105
107
  # * `retries` - (Integer) Number of times to retry requests on server
@@ -115,6 +117,14 @@ module Google
115
117
  Google::Cloud.configure.bigquery
116
118
  end
117
119
 
120
+ ##
121
+ # @private Resolve project.
122
+ def self.resolve_project_id given_project, credentials
123
+ project_id = given_project || default_project_id
124
+ project_id ||= credentials.project_id if credentials.respond_to? :project_id
125
+ project_id.to_s # Always cast to a string
126
+ end
127
+
118
128
  ##
119
129
  # @private Default project.
120
130
  def self.default_project_id
@@ -53,9 +53,15 @@ module Google
53
53
  # bigquery = gcloud.bigquery
54
54
  # dataset = bigquery.dataset "my_dataset"
55
55
  # table = dataset.table "my_table"
56
- # table.data.each do |row|
57
- # puts row
56
+ #
57
+ # data = table.data
58
+ #
59
+ # # Iterate over the first page of results
60
+ # data.each do |row|
61
+ # puts row[:name]
58
62
  # end
63
+ # # Retrieve the next page of results
64
+ # data = data.next if data.next?
59
65
  #
60
66
  # @example The default scope can be overridden with the `scope` option:
61
67
  # require "google/cloud"
@@ -103,13 +109,10 @@ module Google
103
109
  # dataset = bigquery.dataset "my_dataset"
104
110
  # table = dataset.table "my_table"
105
111
  #
106
- def self.bigquery project_id = nil, credentials = nil, scope: nil,
107
- retries: nil, timeout: nil
112
+ def self.bigquery project_id = nil, credentials = nil, scope: nil, retries: nil, timeout: nil
108
113
  require "google/cloud/bigquery"
109
- Google::Cloud::Bigquery.new project_id: project_id,
110
- credentials: credentials,
111
- scope: scope, retries: retries,
112
- timeout: timeout
114
+ Google::Cloud::Bigquery.new project_id: project_id, credentials: credentials,
115
+ scope: scope, retries: retries, timeout: timeout
113
116
  end
114
117
  end
115
118
  end
@@ -121,18 +124,17 @@ Google::Cloud.configure.add_config! :bigquery do |config|
121
124
  end
122
125
  default_creds = Google::Cloud::Config.deferred do
123
126
  Google::Cloud::Config.credentials_from_env(
124
- "BIGQUERY_CREDENTIALS", "BIGQUERY_CREDENTIALS_JSON",
125
- "BIGQUERY_KEYFILE", "BIGQUERY_KEYFILE_JSON"
127
+ "BIGQUERY_CREDENTIALS", "BIGQUERY_CREDENTIALS_JSON", "BIGQUERY_KEYFILE", "BIGQUERY_KEYFILE_JSON"
126
128
  )
127
129
  end
128
130
 
129
131
  config.add_field! :project_id, default_project, match: String, allow_nil: true
130
132
  config.add_alias! :project, :project_id
131
- config.add_field! :credentials, default_creds,
132
- match: [String, Hash, Google::Auth::Credentials],
133
- allow_nil: true
133
+ config.add_field! :credentials, default_creds, match: [String, Hash, Google::Auth::Credentials], allow_nil: true
134
134
  config.add_alias! :keyfile, :credentials
135
135
  config.add_field! :scope, nil, match: [String, Array]
136
+ config.add_field! :quota_project, nil, match: String
136
137
  config.add_field! :retries, nil, match: Integer
137
138
  config.add_field! :timeout, nil, match: Integer
139
+ config.add_field! :endpoint, nil, match: String
138
140
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-cloud-bigquery
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.12.0
4
+ version: 1.38.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Moore
@@ -9,58 +9,72 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2019-07-10 00:00:00.000000000 Z
12
+ date: 2022-01-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: google-cloud-core
15
+ name: concurrent-ruby
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '1.2'
20
+ version: '1.0'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - "~>"
26
26
  - !ruby/object:Gem::Version
27
- version: '1.2'
27
+ version: '1.0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: google-api-client
29
+ name: google-apis-bigquery_v2
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: '0.23'
34
+ version: '0.1'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: '0.23'
41
+ version: '0.1'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: googleauth
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: 0.6.2
48
+ version: 0.16.2
49
49
  - - "<"
50
50
  - !ruby/object:Gem::Version
51
- version: 0.10.0
51
+ version: 2.a
52
52
  type: :runtime
53
53
  prerelease: false
54
54
  version_requirements: !ruby/object:Gem::Requirement
55
55
  requirements:
56
56
  - - ">="
57
57
  - !ruby/object:Gem::Version
58
- version: 0.6.2
58
+ version: 0.16.2
59
59
  - - "<"
60
60
  - !ruby/object:Gem::Version
61
- version: 0.10.0
61
+ version: 2.a
62
62
  - !ruby/object:Gem::Dependency
63
- name: concurrent-ruby
63
+ name: google-cloud-core
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.6'
69
+ type: :runtime
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.6'
76
+ - !ruby/object:Gem::Dependency
77
+ name: mini_mime
64
78
  requirement: !ruby/object:Gem::Requirement
65
79
  requirements:
66
80
  - - "~>"
@@ -74,77 +88,77 @@ dependencies:
74
88
  - !ruby/object:Gem::Version
75
89
  version: '1.0'
76
90
  - !ruby/object:Gem::Dependency
77
- name: mime-types
91
+ name: autotest-suffix
78
92
  requirement: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '3.0'
83
- type: :runtime
96
+ version: '1.1'
97
+ type: :development
84
98
  prerelease: false
85
99
  version_requirements: !ruby/object:Gem::Requirement
86
100
  requirements:
87
101
  - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '3.0'
103
+ version: '1.1'
90
104
  - !ruby/object:Gem::Dependency
91
- name: minitest
105
+ name: google-cloud-data_catalog
92
106
  requirement: !ruby/object:Gem::Requirement
93
107
  requirements:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '5.10'
110
+ version: '1.2'
97
111
  type: :development
98
112
  prerelease: false
99
113
  version_requirements: !ruby/object:Gem::Requirement
100
114
  requirements:
101
115
  - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: '5.10'
117
+ version: '1.2'
104
118
  - !ruby/object:Gem::Dependency
105
- name: minitest-autotest
119
+ name: google-style
106
120
  requirement: !ruby/object:Gem::Requirement
107
121
  requirements:
108
122
  - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: '1.0'
124
+ version: 1.25.1
111
125
  type: :development
112
126
  prerelease: false
113
127
  version_requirements: !ruby/object:Gem::Requirement
114
128
  requirements:
115
129
  - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '1.0'
131
+ version: 1.25.1
118
132
  - !ruby/object:Gem::Dependency
119
- name: minitest-focus
133
+ name: minitest
120
134
  requirement: !ruby/object:Gem::Requirement
121
135
  requirements:
122
136
  - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '1.1'
138
+ version: '5.14'
125
139
  type: :development
126
140
  prerelease: false
127
141
  version_requirements: !ruby/object:Gem::Requirement
128
142
  requirements:
129
143
  - - "~>"
130
144
  - !ruby/object:Gem::Version
131
- version: '1.1'
145
+ version: '5.14'
132
146
  - !ruby/object:Gem::Dependency
133
- name: minitest-rg
147
+ name: minitest-autotest
134
148
  requirement: !ruby/object:Gem::Requirement
135
149
  requirements:
136
150
  - - "~>"
137
151
  - !ruby/object:Gem::Version
138
- version: '5.2'
152
+ version: '1.0'
139
153
  type: :development
140
154
  prerelease: false
141
155
  version_requirements: !ruby/object:Gem::Requirement
142
156
  requirements:
143
157
  - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: '5.2'
159
+ version: '1.0'
146
160
  - !ruby/object:Gem::Dependency
147
- name: autotest-suffix
161
+ name: minitest-focus
148
162
  requirement: !ruby/object:Gem::Requirement
149
163
  requirements:
150
164
  - - "~>"
@@ -158,47 +172,47 @@ dependencies:
158
172
  - !ruby/object:Gem::Version
159
173
  version: '1.1'
160
174
  - !ruby/object:Gem::Dependency
161
- name: redcarpet
175
+ name: minitest-rg
162
176
  requirement: !ruby/object:Gem::Requirement
163
177
  requirements:
164
178
  - - "~>"
165
179
  - !ruby/object:Gem::Version
166
- version: '3.0'
180
+ version: '5.2'
167
181
  type: :development
168
182
  prerelease: false
169
183
  version_requirements: !ruby/object:Gem::Requirement
170
184
  requirements:
171
185
  - - "~>"
172
186
  - !ruby/object:Gem::Version
173
- version: '3.0'
187
+ version: '5.2'
174
188
  - !ruby/object:Gem::Dependency
175
- name: rubocop
189
+ name: redcarpet
176
190
  requirement: !ruby/object:Gem::Requirement
177
191
  requirements:
178
192
  - - "~>"
179
193
  - !ruby/object:Gem::Version
180
- version: 0.64.0
194
+ version: '3.0'
181
195
  type: :development
182
196
  prerelease: false
183
197
  version_requirements: !ruby/object:Gem::Requirement
184
198
  requirements:
185
199
  - - "~>"
186
200
  - !ruby/object:Gem::Version
187
- version: 0.64.0
201
+ version: '3.0'
188
202
  - !ruby/object:Gem::Dependency
189
203
  name: simplecov
190
204
  requirement: !ruby/object:Gem::Requirement
191
205
  requirements:
192
206
  - - "~>"
193
207
  - !ruby/object:Gem::Version
194
- version: '0.9'
208
+ version: '0.18'
195
209
  type: :development
196
210
  prerelease: false
197
211
  version_requirements: !ruby/object:Gem::Requirement
198
212
  requirements:
199
213
  - - "~>"
200
214
  - !ruby/object:Gem::Version
201
- version: '0.9'
215
+ version: '0.18'
202
216
  - !ruby/object:Gem::Dependency
203
217
  name: yard
204
218
  requirement: !ruby/object:Gem::Requirement
@@ -246,6 +260,7 @@ files:
246
260
  - TROUBLESHOOTING.md
247
261
  - lib/google-cloud-bigquery.rb
248
262
  - lib/google/cloud/bigquery.rb
263
+ - lib/google/cloud/bigquery/argument.rb
249
264
  - lib/google/cloud/bigquery/convert.rb
250
265
  - lib/google/cloud/bigquery/copy_job.rb
251
266
  - lib/google/cloud/bigquery/credentials.rb
@@ -255,6 +270,15 @@ files:
255
270
  - lib/google/cloud/bigquery/dataset/list.rb
256
271
  - lib/google/cloud/bigquery/encryption_configuration.rb
257
272
  - lib/google/cloud/bigquery/external.rb
273
+ - lib/google/cloud/bigquery/external/avro_source.rb
274
+ - lib/google/cloud/bigquery/external/bigtable_source.rb
275
+ - lib/google/cloud/bigquery/external/bigtable_source/column.rb
276
+ - lib/google/cloud/bigquery/external/bigtable_source/column_family.rb
277
+ - lib/google/cloud/bigquery/external/csv_source.rb
278
+ - lib/google/cloud/bigquery/external/data_source.rb
279
+ - lib/google/cloud/bigquery/external/json_source.rb
280
+ - lib/google/cloud/bigquery/external/parquet_source.rb
281
+ - lib/google/cloud/bigquery/external/sheets_source.rb
258
282
  - lib/google/cloud/bigquery/extract_job.rb
259
283
  - lib/google/cloud/bigquery/insert_response.rb
260
284
  - lib/google/cloud/bigquery/job.rb
@@ -262,9 +286,12 @@ files:
262
286
  - lib/google/cloud/bigquery/load_job.rb
263
287
  - lib/google/cloud/bigquery/model.rb
264
288
  - lib/google/cloud/bigquery/model/list.rb
289
+ - lib/google/cloud/bigquery/policy.rb
265
290
  - lib/google/cloud/bigquery/project.rb
266
291
  - lib/google/cloud/bigquery/project/list.rb
267
292
  - lib/google/cloud/bigquery/query_job.rb
293
+ - lib/google/cloud/bigquery/routine.rb
294
+ - lib/google/cloud/bigquery/routine/list.rb
268
295
  - lib/google/cloud/bigquery/schema.rb
269
296
  - lib/google/cloud/bigquery/schema/field.rb
270
297
  - lib/google/cloud/bigquery/service.rb
@@ -286,14 +313,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
286
313
  requirements:
287
314
  - - ">="
288
315
  - !ruby/object:Gem::Version
289
- version: 2.0.0
316
+ version: '2.5'
290
317
  required_rubygems_version: !ruby/object:Gem::Requirement
291
318
  requirements:
292
319
  - - ">="
293
320
  - !ruby/object:Gem::Version
294
321
  version: '0'
295
322
  requirements: []
296
- rubygems_version: 3.0.3
323
+ rubygems_version: 3.3.5
297
324
  signing_key:
298
325
  specification_version: 4
299
326
  summary: API Client library for Google BigQuery