google-cloud-bigquery 1.21.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +16 -0
  3. data/AUTHENTICATION.md +158 -0
  4. data/CHANGELOG.md +397 -0
  5. data/CODE_OF_CONDUCT.md +40 -0
  6. data/CONTRIBUTING.md +188 -0
  7. data/LICENSE +201 -0
  8. data/LOGGING.md +27 -0
  9. data/OVERVIEW.md +463 -0
  10. data/TROUBLESHOOTING.md +31 -0
  11. data/lib/google-cloud-bigquery.rb +139 -0
  12. data/lib/google/cloud/bigquery.rb +145 -0
  13. data/lib/google/cloud/bigquery/argument.rb +197 -0
  14. data/lib/google/cloud/bigquery/convert.rb +383 -0
  15. data/lib/google/cloud/bigquery/copy_job.rb +316 -0
  16. data/lib/google/cloud/bigquery/credentials.rb +50 -0
  17. data/lib/google/cloud/bigquery/data.rb +526 -0
  18. data/lib/google/cloud/bigquery/dataset.rb +2845 -0
  19. data/lib/google/cloud/bigquery/dataset/access.rb +1021 -0
  20. data/lib/google/cloud/bigquery/dataset/list.rb +162 -0
  21. data/lib/google/cloud/bigquery/encryption_configuration.rb +123 -0
  22. data/lib/google/cloud/bigquery/external.rb +2432 -0
  23. data/lib/google/cloud/bigquery/extract_job.rb +368 -0
  24. data/lib/google/cloud/bigquery/insert_response.rb +180 -0
  25. data/lib/google/cloud/bigquery/job.rb +657 -0
  26. data/lib/google/cloud/bigquery/job/list.rb +162 -0
  27. data/lib/google/cloud/bigquery/load_job.rb +1704 -0
  28. data/lib/google/cloud/bigquery/model.rb +740 -0
  29. data/lib/google/cloud/bigquery/model/list.rb +164 -0
  30. data/lib/google/cloud/bigquery/project.rb +1655 -0
  31. data/lib/google/cloud/bigquery/project/list.rb +161 -0
  32. data/lib/google/cloud/bigquery/query_job.rb +1695 -0
  33. data/lib/google/cloud/bigquery/routine.rb +1108 -0
  34. data/lib/google/cloud/bigquery/routine/list.rb +165 -0
  35. data/lib/google/cloud/bigquery/schema.rb +564 -0
  36. data/lib/google/cloud/bigquery/schema/field.rb +668 -0
  37. data/lib/google/cloud/bigquery/service.rb +589 -0
  38. data/lib/google/cloud/bigquery/standard_sql.rb +495 -0
  39. data/lib/google/cloud/bigquery/table.rb +3340 -0
  40. data/lib/google/cloud/bigquery/table/async_inserter.rb +520 -0
  41. data/lib/google/cloud/bigquery/table/list.rb +172 -0
  42. data/lib/google/cloud/bigquery/time.rb +65 -0
  43. data/lib/google/cloud/bigquery/version.rb +22 -0
  44. metadata +297 -0
@@ -0,0 +1,172 @@
1
+ # Copyright 2015 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+
16
+ require "delegate"
17
+
18
+ module Google
19
+ module Cloud
20
+ module Bigquery
21
+ class Table
22
+ ##
23
+ # Table::List is a special case Array with additional values.
24
+ class List < DelegateClass(::Array)
25
+ ##
26
+ # If not empty, indicates that there are more records that match
27
+ # the request and this value should be passed to continue.
28
+ attr_accessor :token
29
+
30
+ # A hash of this page of results.
31
+ attr_accessor :etag
32
+
33
+ # Total number of tables in this collection.
34
+ attr_accessor :total
35
+
36
+ ##
37
+ # @private Create a new Table::List with an array of tables.
38
+ def initialize arr = []
39
+ super arr
40
+ end
41
+
42
+ ##
43
+ # Whether there is a next page of tables.
44
+ #
45
+ # @return [Boolean]
46
+ #
47
+ # @example
48
+ # require "google/cloud/bigquery"
49
+ #
50
+ # bigquery = Google::Cloud::Bigquery.new
51
+ # dataset = bigquery.dataset "my_dataset"
52
+ #
53
+ # tables = dataset.tables
54
+ # if tables.next?
55
+ # next_tables = tables.next
56
+ # end
57
+ #
58
+ def next?
59
+ !token.nil?
60
+ end
61
+
62
+ ##
63
+ # Retrieve the next page of tables.
64
+ #
65
+ # @return [Table::List]
66
+ #
67
+ # @example
68
+ # require "google/cloud/bigquery"
69
+ #
70
+ # bigquery = Google::Cloud::Bigquery.new
71
+ # dataset = bigquery.dataset "my_dataset"
72
+ #
73
+ # tables = dataset.tables
74
+ # if tables.next?
75
+ # next_tables = tables.next
76
+ # end
77
+ #
78
+ def next
79
+ return nil unless next?
80
+ ensure_service!
81
+ gapi = @service.list_tables @dataset_id, token: token, max: @max
82
+ self.class.from_gapi gapi, @service, @dataset_id, @max
83
+ end
84
+
85
+ ##
86
+ # Retrieves remaining results by repeatedly invoking {#next} until
87
+ # {#next?} returns `false`. Calls the given block once for each
88
+ # result, which is passed as the argument to the block.
89
+ #
90
+ # An Enumerator is returned if no block is given.
91
+ #
92
+ # This method will make repeated API calls until all remaining results
93
+ # are retrieved. (Unlike `#each`, for example, which merely iterates
94
+ # over the results returned by a single API call.) Use with caution.
95
+ #
96
+ # @param [Integer] request_limit The upper limit of API requests to
97
+ # make to load all tables. Default is no limit.
98
+ # @yield [table] The block for accessing each table.
99
+ # @yieldparam [Table] table The table object.
100
+ #
101
+ # @return [Enumerator]
102
+ #
103
+ # @example Iterating each result by passing a block:
104
+ # require "google/cloud/bigquery"
105
+ #
106
+ # bigquery = Google::Cloud::Bigquery.new
107
+ # dataset = bigquery.dataset "my_dataset"
108
+ #
109
+ # dataset.tables.all do |table|
110
+ # puts table.name
111
+ # end
112
+ #
113
+ # @example Using the enumerator by not passing a block:
114
+ # require "google/cloud/bigquery"
115
+ #
116
+ # bigquery = Google::Cloud::Bigquery.new
117
+ # dataset = bigquery.dataset "my_dataset"
118
+ #
119
+ # all_names = dataset.tables.all.map do |table|
120
+ # table.name
121
+ # end
122
+ #
123
+ # @example Limit the number of API requests made:
124
+ # require "google/cloud/bigquery"
125
+ #
126
+ # bigquery = Google::Cloud::Bigquery.new
127
+ # dataset = bigquery.dataset "my_dataset"
128
+ #
129
+ # dataset.tables.all(request_limit: 10) do |table|
130
+ # puts table.name
131
+ # end
132
+ #
133
+ def all request_limit: nil
134
+ request_limit = request_limit.to_i if request_limit
135
+ return enum_for :all, request_limit: request_limit unless block_given?
136
+ results = self
137
+ loop do
138
+ results.each { |r| yield r }
139
+ if request_limit
140
+ request_limit -= 1
141
+ break if request_limit.negative?
142
+ end
143
+ break unless results.next?
144
+ results = results.next
145
+ end
146
+ end
147
+
148
+ ##
149
+ # @private New Table::List from a response object.
150
+ def self.from_gapi gapi_list, service, dataset_id = nil, max = nil
151
+ tables = List.new(Array(gapi_list.tables).map { |gapi_object| Table.from_gapi gapi_object, service })
152
+ tables.instance_variable_set :@token, gapi_list.next_page_token
153
+ tables.instance_variable_set :@etag, gapi_list.etag
154
+ tables.instance_variable_set :@total, gapi_list.total_items
155
+ tables.instance_variable_set :@service, service
156
+ tables.instance_variable_set :@dataset_id, dataset_id
157
+ tables.instance_variable_set :@max, max
158
+ tables
159
+ end
160
+
161
+ protected
162
+
163
+ ##
164
+ # Raise an error unless an active service is available.
165
+ def ensure_service!
166
+ raise "Must have active connection" unless @service
167
+ end
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
@@ -0,0 +1,65 @@
1
+ # Copyright 2016 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+
16
+ module Google
17
+ module Cloud
18
+ module Bigquery
19
+ ##
20
+ # # Time
21
+ #
22
+ # A TIME data type represents a time, independent of a specific date.
23
+ #
24
+ # @attr_writer [String] value The BigQuery TIME.
25
+ #
26
+ # @example
27
+ # require "google/cloud/bigquery"
28
+ #
29
+ # bigquery = Google::Cloud::Bigquery.new
30
+ #
31
+ # fourpm = Google::Cloud::Bigquery::Time.new "16:00:00"
32
+ # data = bigquery.query "SELECT name " \
33
+ # "FROM `my_project.my_dataset.my_table`" \
34
+ # "WHERE time_of_date = @time",
35
+ # params: { time: fourpm }
36
+ #
37
+ # # Iterate over the first page of results
38
+ # data.each do |row|
39
+ # puts row[:name]
40
+ # end
41
+ # # Retrieve the next page of results
42
+ # data = data.next if data.next?
43
+ #
44
+ # @example Create Time with fractional seconds:
45
+ # require "google/cloud/bigquery"
46
+ #
47
+ # bigquery = Google::Cloud::Bigquery.new
48
+ #
49
+ # precise_time = Google::Cloud::Bigquery::Time.new "16:35:15.376541"
50
+ # data = bigquery.query "SELECT name " \
51
+ # "FROM `my_project.my_dataset.my_table`" \
52
+ # "WHERE time_of_date >= @time",
53
+ # params: { time: precise_time }
54
+ #
55
+ # # Iterate over the first page of results
56
+ # data.each do |row|
57
+ # puts row[:name]
58
+ # end
59
+ # # Retrieve the next page of results
60
+ # data = data.next if data.next?
61
+ #
62
+ Time = Struct.new :value
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,22 @@
1
+ # Copyright 2016 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+
16
+ module Google
17
+ module Cloud
18
+ module Bigquery
19
+ VERSION = "1.21.2".freeze
20
+ end
21
+ end
22
+ end
metadata ADDED
@@ -0,0 +1,297 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: google-cloud-bigquery
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.21.2
5
+ platform: ruby
6
+ authors:
7
+ - Mike Moore
8
+ - Chris Smith
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2020-07-21 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: concurrent-ruby
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - "~>"
19
+ - !ruby/object:Gem::Version
20
+ version: '1.0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - "~>"
26
+ - !ruby/object:Gem::Version
27
+ version: '1.0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: google-api-client
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - "~>"
33
+ - !ruby/object:Gem::Version
34
+ version: '0.33'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: '0.33'
42
+ - !ruby/object:Gem::Dependency
43
+ name: google-cloud-core
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - "~>"
47
+ - !ruby/object:Gem::Version
48
+ version: '1.2'
49
+ type: :runtime
50
+ prerelease: false
51
+ version_requirements: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - "~>"
54
+ - !ruby/object:Gem::Version
55
+ version: '1.2'
56
+ - !ruby/object:Gem::Dependency
57
+ name: googleauth
58
+ requirement: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - "~>"
61
+ - !ruby/object:Gem::Version
62
+ version: '0.9'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: '0.9'
70
+ - !ruby/object:Gem::Dependency
71
+ name: mini_mime
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - "~>"
75
+ - !ruby/object:Gem::Version
76
+ version: '1.0'
77
+ type: :runtime
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '1.0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: autotest-suffix
86
+ requirement: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - "~>"
89
+ - !ruby/object:Gem::Version
90
+ version: '1.1'
91
+ type: :development
92
+ prerelease: false
93
+ version_requirements: !ruby/object:Gem::Requirement
94
+ requirements:
95
+ - - "~>"
96
+ - !ruby/object:Gem::Version
97
+ version: '1.1'
98
+ - !ruby/object:Gem::Dependency
99
+ name: google-style
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - "~>"
103
+ - !ruby/object:Gem::Version
104
+ version: 1.24.0
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: 1.24.0
112
+ - !ruby/object:Gem::Dependency
113
+ name: minitest
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '5.14'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: '5.14'
126
+ - !ruby/object:Gem::Dependency
127
+ name: minitest-autotest
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: '1.0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '1.0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: minitest-focus
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: '1.1'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: '1.1'
154
+ - !ruby/object:Gem::Dependency
155
+ name: minitest-rg
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - "~>"
159
+ - !ruby/object:Gem::Version
160
+ version: '5.2'
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - "~>"
166
+ - !ruby/object:Gem::Version
167
+ version: '5.2'
168
+ - !ruby/object:Gem::Dependency
169
+ name: redcarpet
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - "~>"
173
+ - !ruby/object:Gem::Version
174
+ version: '3.0'
175
+ type: :development
176
+ prerelease: false
177
+ version_requirements: !ruby/object:Gem::Requirement
178
+ requirements:
179
+ - - "~>"
180
+ - !ruby/object:Gem::Version
181
+ version: '3.0'
182
+ - !ruby/object:Gem::Dependency
183
+ name: simplecov
184
+ requirement: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - "~>"
187
+ - !ruby/object:Gem::Version
188
+ version: '0.18'
189
+ type: :development
190
+ prerelease: false
191
+ version_requirements: !ruby/object:Gem::Requirement
192
+ requirements:
193
+ - - "~>"
194
+ - !ruby/object:Gem::Version
195
+ version: '0.18'
196
+ - !ruby/object:Gem::Dependency
197
+ name: yard
198
+ requirement: !ruby/object:Gem::Requirement
199
+ requirements:
200
+ - - "~>"
201
+ - !ruby/object:Gem::Version
202
+ version: '0.9'
203
+ type: :development
204
+ prerelease: false
205
+ version_requirements: !ruby/object:Gem::Requirement
206
+ requirements:
207
+ - - "~>"
208
+ - !ruby/object:Gem::Version
209
+ version: '0.9'
210
+ - !ruby/object:Gem::Dependency
211
+ name: yard-doctest
212
+ requirement: !ruby/object:Gem::Requirement
213
+ requirements:
214
+ - - "~>"
215
+ - !ruby/object:Gem::Version
216
+ version: 0.1.13
217
+ type: :development
218
+ prerelease: false
219
+ version_requirements: !ruby/object:Gem::Requirement
220
+ requirements:
221
+ - - "~>"
222
+ - !ruby/object:Gem::Version
223
+ version: 0.1.13
224
+ description: google-cloud-bigquery is the official library for Google BigQuery.
225
+ email:
226
+ - mike@blowmage.com
227
+ - quartzmo@gmail.com
228
+ executables: []
229
+ extensions: []
230
+ extra_rdoc_files: []
231
+ files:
232
+ - ".yardopts"
233
+ - AUTHENTICATION.md
234
+ - CHANGELOG.md
235
+ - CODE_OF_CONDUCT.md
236
+ - CONTRIBUTING.md
237
+ - LICENSE
238
+ - LOGGING.md
239
+ - OVERVIEW.md
240
+ - TROUBLESHOOTING.md
241
+ - lib/google-cloud-bigquery.rb
242
+ - lib/google/cloud/bigquery.rb
243
+ - lib/google/cloud/bigquery/argument.rb
244
+ - lib/google/cloud/bigquery/convert.rb
245
+ - lib/google/cloud/bigquery/copy_job.rb
246
+ - lib/google/cloud/bigquery/credentials.rb
247
+ - lib/google/cloud/bigquery/data.rb
248
+ - lib/google/cloud/bigquery/dataset.rb
249
+ - lib/google/cloud/bigquery/dataset/access.rb
250
+ - lib/google/cloud/bigquery/dataset/list.rb
251
+ - lib/google/cloud/bigquery/encryption_configuration.rb
252
+ - lib/google/cloud/bigquery/external.rb
253
+ - lib/google/cloud/bigquery/extract_job.rb
254
+ - lib/google/cloud/bigquery/insert_response.rb
255
+ - lib/google/cloud/bigquery/job.rb
256
+ - lib/google/cloud/bigquery/job/list.rb
257
+ - lib/google/cloud/bigquery/load_job.rb
258
+ - lib/google/cloud/bigquery/model.rb
259
+ - lib/google/cloud/bigquery/model/list.rb
260
+ - lib/google/cloud/bigquery/project.rb
261
+ - lib/google/cloud/bigquery/project/list.rb
262
+ - lib/google/cloud/bigquery/query_job.rb
263
+ - lib/google/cloud/bigquery/routine.rb
264
+ - lib/google/cloud/bigquery/routine/list.rb
265
+ - lib/google/cloud/bigquery/schema.rb
266
+ - lib/google/cloud/bigquery/schema/field.rb
267
+ - lib/google/cloud/bigquery/service.rb
268
+ - lib/google/cloud/bigquery/standard_sql.rb
269
+ - lib/google/cloud/bigquery/table.rb
270
+ - lib/google/cloud/bigquery/table/async_inserter.rb
271
+ - lib/google/cloud/bigquery/table/list.rb
272
+ - lib/google/cloud/bigquery/time.rb
273
+ - lib/google/cloud/bigquery/version.rb
274
+ homepage: https://github.com/googleapis/google-cloud-ruby/tree/master/google-cloud-bigquery
275
+ licenses:
276
+ - Apache-2.0
277
+ metadata: {}
278
+ post_install_message:
279
+ rdoc_options: []
280
+ require_paths:
281
+ - lib
282
+ required_ruby_version: !ruby/object:Gem::Requirement
283
+ requirements:
284
+ - - ">="
285
+ - !ruby/object:Gem::Version
286
+ version: '2.4'
287
+ required_rubygems_version: !ruby/object:Gem::Requirement
288
+ requirements:
289
+ - - ">="
290
+ - !ruby/object:Gem::Version
291
+ version: '0'
292
+ requirements: []
293
+ rubygems_version: 3.1.3
294
+ signing_key:
295
+ specification_version: 4
296
+ summary: API Client library for Google BigQuery
297
+ test_files: []