google-cloud-bigquery 0.23.0 → 0.24.0
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 +4 -4
- data/lib/google/cloud/bigquery.rb +33 -32
- data/lib/google/cloud/bigquery/convert.rb +258 -0
- data/lib/google/cloud/bigquery/data.rb +20 -44
- data/lib/google/cloud/bigquery/dataset.rb +49 -65
- data/lib/google/cloud/bigquery/project.rb +42 -44
- data/lib/google/cloud/bigquery/query_data.rb +9 -8
- data/lib/google/cloud/bigquery/schema.rb +151 -179
- data/lib/google/cloud/bigquery/schema/field.rb +498 -0
- data/lib/google/cloud/bigquery/service.rb +11 -105
- data/lib/google/cloud/bigquery/table.rb +130 -6
- data/lib/google/cloud/bigquery/time.rb +2 -2
- data/lib/google/cloud/bigquery/version.rb +1 -1
- data/lib/google/cloud/bigquery/view.rb +36 -7
- metadata +11 -9
@@ -302,9 +302,6 @@ module Google
|
|
302
302
|
# length is 1,024 characters.
|
303
303
|
# @param [String] name A descriptive name for the table.
|
304
304
|
# @param [String] description A user-friendly description of the table.
|
305
|
-
# @param [Array<Schema::Field>] fields An array of Schema::Field objects
|
306
|
-
# specifying the schema's data types for the table. The schema may
|
307
|
-
# also be configured when passing a block.
|
308
305
|
# @yield [table] a block for setting the table
|
309
306
|
# @yieldparam [Table] table the table object to be updated
|
310
307
|
#
|
@@ -326,26 +323,6 @@ module Google
|
|
326
323
|
# name: "My Table",
|
327
324
|
# description: "A description of table."
|
328
325
|
#
|
329
|
-
# @example The table's schema fields can be passed as an argument.
|
330
|
-
# require "google/cloud/bigquery"
|
331
|
-
#
|
332
|
-
# bigquery = Google::Cloud::Bigquery.new
|
333
|
-
# dataset = bigquery.dataset "my_dataset"
|
334
|
-
#
|
335
|
-
# schema_fields = [
|
336
|
-
# Google::Cloud::Bigquery::Schema::Field.new(
|
337
|
-
# "first_name", :string, mode: :required),
|
338
|
-
# Google::Cloud::Bigquery::Schema::Field.new(
|
339
|
-
# "cities_lived", :record, mode: :repeated,
|
340
|
-
# fields: [
|
341
|
-
# Google::Cloud::Bigquery::Schema::Field.new(
|
342
|
-
# "place", :string, mode: :required),
|
343
|
-
# Google::Cloud::Bigquery::Schema::Field.new(
|
344
|
-
# "number_of_years", :integer, mode: :required),
|
345
|
-
# ])
|
346
|
-
# ]
|
347
|
-
# table = dataset.create_table "my_table", fields: schema_fields
|
348
|
-
#
|
349
326
|
# @example Or the table's schema can be configured with the block.
|
350
327
|
# require "google/cloud/bigquery"
|
351
328
|
#
|
@@ -379,7 +356,7 @@ module Google
|
|
379
356
|
#
|
380
357
|
# @!group Table
|
381
358
|
#
|
382
|
-
def create_table table_id, name: nil, description: nil
|
359
|
+
def create_table table_id, name: nil, description: nil
|
383
360
|
ensure_service!
|
384
361
|
new_tb = Google::Apis::BigqueryV2::Table.new(
|
385
362
|
table_reference: Google::Apis::BigqueryV2::TableReference.new(
|
@@ -388,7 +365,6 @@ module Google
|
|
388
365
|
updater = Table::Updater.new(new_tb).tap do |tb|
|
389
366
|
tb.name = name unless name.nil?
|
390
367
|
tb.description = description unless description.nil?
|
391
|
-
tb.schema.fields = fields unless fields.nil?
|
392
368
|
end
|
393
369
|
|
394
370
|
yield updater if block_given?
|
@@ -407,6 +383,14 @@ module Google
|
|
407
383
|
# is referenced.
|
408
384
|
# @param [String] name A descriptive name for the table.
|
409
385
|
# @param [String] description A user-friendly description of the table.
|
386
|
+
# @param [Boolean] standard_sql Specifies whether to use BigQuery's
|
387
|
+
# [standard
|
388
|
+
# SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
|
389
|
+
# dialect. Optional. The default value is true.
|
390
|
+
# @param [Boolean] legacy_sql Specifies whether to use BigQuery's
|
391
|
+
# [legacy
|
392
|
+
# SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
|
393
|
+
# dialect. Optional. The default value is false.
|
410
394
|
#
|
411
395
|
# @return [Google::Cloud::Bigquery::View]
|
412
396
|
#
|
@@ -416,7 +400,7 @@ module Google
|
|
416
400
|
# bigquery = Google::Cloud::Bigquery.new
|
417
401
|
# dataset = bigquery.dataset "my_dataset"
|
418
402
|
# view = dataset.create_view "my_view",
|
419
|
-
# "SELECT name, age FROM
|
403
|
+
# "SELECT name, age FROM proj.dataset.users"
|
420
404
|
#
|
421
405
|
# @example A name and description can be provided:
|
422
406
|
# require "google/cloud/bigquery"
|
@@ -424,12 +408,13 @@ module Google
|
|
424
408
|
# bigquery = Google::Cloud::Bigquery.new
|
425
409
|
# dataset = bigquery.dataset "my_dataset"
|
426
410
|
# view = dataset.create_view "my_view",
|
427
|
-
# "SELECT name, age FROM
|
411
|
+
# "SELECT name, age FROM proj.dataset.users",
|
428
412
|
# name: "My View", description: "This is my view"
|
429
413
|
#
|
430
414
|
# @!group Table
|
431
415
|
#
|
432
|
-
def create_view table_id, query, name: nil, description: nil
|
416
|
+
def create_view table_id, query, name: nil, description: nil,
|
417
|
+
standard_sql: nil, legacy_sql: nil
|
433
418
|
new_view_opts = {
|
434
419
|
table_reference: Google::Apis::BigqueryV2::TableReference.new(
|
435
420
|
project_id: project_id, dataset_id: dataset_id, table_id: table_id
|
@@ -437,7 +422,9 @@ module Google
|
|
437
422
|
friendly_name: name,
|
438
423
|
description: description,
|
439
424
|
view: Google::Apis::BigqueryV2::ViewDefinition.new(
|
440
|
-
query: query
|
425
|
+
query: query,
|
426
|
+
use_legacy_sql: Convert.resolve_legacy_sql(standard_sql,
|
427
|
+
legacy_sql)
|
441
428
|
)
|
442
429
|
}.delete_if { |_, v| v.nil? }
|
443
430
|
new_view = Google::Apis::BigqueryV2::Table.new new_view_opts
|
@@ -579,31 +566,28 @@ module Google
|
|
579
566
|
# * `append` - BigQuery appends the data to the table.
|
580
567
|
# * `empty` - A 'duplicate' error is returned in the job result if the
|
581
568
|
# table exists and contains data.
|
582
|
-
# @param [Boolean] large_results If `true`, allows the query to produce
|
583
|
-
# arbitrarily large result tables at a slight cost in performance.
|
584
|
-
# Requires `table` parameter to be set.
|
585
|
-
# @param [Boolean] flatten Flattens all nested and repeated fields in
|
586
|
-
# the query results. The default value is `true`. `large_results`
|
587
|
-
# parameter must be `true` if this is set to `false`.
|
588
|
-
# @param [Boolean] legacy_sql Specifies whether to use BigQuery's
|
589
|
-
# [legacy
|
590
|
-
# SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
|
591
|
-
# dialect for this query. If set to false, the query will use
|
592
|
-
# BigQuery's [standard
|
593
|
-
# SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
|
594
|
-
# When set to false, the values of `large_results` and `flatten` are
|
595
|
-
# ignored; the query will be run as if `large_results` is true and
|
596
|
-
# `flatten` is false. Optional. The default value is true.
|
597
569
|
# @param [Boolean] standard_sql Specifies whether to use BigQuery's
|
598
570
|
# [standard
|
599
571
|
# SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
|
600
572
|
# dialect for this query. If set to true, the query will use standard
|
601
573
|
# SQL rather than the [legacy
|
602
574
|
# SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
|
603
|
-
# dialect.
|
604
|
-
#
|
605
|
-
#
|
606
|
-
#
|
575
|
+
# dialect. Optional. The default value is true.
|
576
|
+
# @param [Boolean] legacy_sql Specifies whether to use BigQuery's
|
577
|
+
# [legacy
|
578
|
+
# SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
|
579
|
+
# dialect for this query. If set to false, the query will use
|
580
|
+
# BigQuery's [standard
|
581
|
+
# SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
|
582
|
+
# dialect. Optional. The default value is false.
|
583
|
+
# @param [Boolean] large_results This option is specific to Legacy SQL.
|
584
|
+
# If `true`, allows the query to produce arbitrarily large result
|
585
|
+
# tables at a slight cost in performance. Requires `table` parameter
|
586
|
+
# to be set.
|
587
|
+
# @param [Boolean] flatten This option is specific to Legacy SQL.
|
588
|
+
# Flattens all nested and repeated fields in the query results. The
|
589
|
+
# default value is `true`. `large_results` parameter must be `true` if
|
590
|
+
# this is set to `false`.
|
607
591
|
#
|
608
592
|
# @return [Google::Cloud::Bigquery::QueryJob]
|
609
593
|
#
|
@@ -621,13 +605,13 @@ module Google
|
|
621
605
|
# end
|
622
606
|
# end
|
623
607
|
#
|
624
|
-
# @example Query using
|
608
|
+
# @example Query using legacy SQL:
|
625
609
|
# require "google/cloud/bigquery"
|
626
610
|
#
|
627
611
|
# bigquery = Google::Cloud::Bigquery.new
|
628
612
|
#
|
629
613
|
# job = bigquery.query_job "SELECT name FROM my_table",
|
630
|
-
#
|
614
|
+
# legacy_sql: true
|
631
615
|
#
|
632
616
|
# job.wait_until_done!
|
633
617
|
# if !job.failed?
|
@@ -669,8 +653,8 @@ module Google
|
|
669
653
|
# @!group Data
|
670
654
|
#
|
671
655
|
def query_job query, params: nil, priority: "INTERACTIVE", cache: true,
|
672
|
-
table: nil, create: nil, write: nil,
|
673
|
-
|
656
|
+
table: nil, create: nil, write: nil, standard_sql: nil,
|
657
|
+
legacy_sql: nil, large_results: nil, flatten: nil
|
674
658
|
options = { priority: priority, cache: cache, table: table,
|
675
659
|
create: create, write: write,
|
676
660
|
large_results: large_results, flatten: flatten,
|
@@ -741,15 +725,6 @@ module Google
|
|
741
725
|
# whenever tables in the query are modified. The default value is
|
742
726
|
# true. For more information, see [query
|
743
727
|
# caching](https://developers.google.com/bigquery/querying-data).
|
744
|
-
# @param [Boolean] legacy_sql Specifies whether to use BigQuery's
|
745
|
-
# [legacy
|
746
|
-
# SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
|
747
|
-
# dialect for this query. If set to false, the query will use
|
748
|
-
# BigQuery's [standard
|
749
|
-
# SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
|
750
|
-
# When set to false, the values of `large_results` and `flatten` are
|
751
|
-
# ignored; the query will be run as if `large_results` is true and
|
752
|
-
# `flatten` is false. Optional. The default value is true.
|
753
728
|
# @param [Boolean] standard_sql Specifies whether to use BigQuery's
|
754
729
|
# [standard
|
755
730
|
# SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
|
@@ -759,7 +734,16 @@ module Google
|
|
759
734
|
# dialect. When set to true, the values of `large_results` and
|
760
735
|
# `flatten` are ignored; the query will be run as if `large_results`
|
761
736
|
# is true and `flatten` is false. Optional. The default value is
|
762
|
-
#
|
737
|
+
# true.
|
738
|
+
# @param [Boolean] legacy_sql Specifies whether to use BigQuery's
|
739
|
+
# [legacy
|
740
|
+
# SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
|
741
|
+
# dialect for this query. If set to false, the query will use
|
742
|
+
# BigQuery's [standard
|
743
|
+
# SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
|
744
|
+
# When set to false, the values of `large_results` and `flatten` are
|
745
|
+
# ignored; the query will be run as if `large_results` is true and
|
746
|
+
# `flatten` is false. Optional. The default value is false.
|
763
747
|
#
|
764
748
|
# @return [Google::Cloud::Bigquery::QueryData]
|
765
749
|
#
|
@@ -774,13 +758,13 @@ module Google
|
|
774
758
|
# puts row["name"]
|
775
759
|
# end
|
776
760
|
#
|
777
|
-
# @example Query using
|
761
|
+
# @example Query using legacy SQL:
|
778
762
|
# require "google/cloud/bigquery"
|
779
763
|
#
|
780
764
|
# bigquery = Google::Cloud::Bigquery.new
|
781
765
|
#
|
782
766
|
# data = bigquery.query "SELECT name FROM my_table",
|
783
|
-
#
|
767
|
+
# legacy_sql: true
|
784
768
|
#
|
785
769
|
# data.each do |row|
|
786
770
|
# puts row["name"]
|
@@ -813,7 +797,7 @@ module Google
|
|
813
797
|
# @!group Data
|
814
798
|
#
|
815
799
|
def query query, params: nil, max: nil, timeout: 10000, dryrun: nil,
|
816
|
-
cache: true,
|
800
|
+
cache: true, standard_sql: nil, legacy_sql: nil
|
817
801
|
options = { max: max, timeout: timeout, dryrun: dryrun, cache: cache,
|
818
802
|
legacy_sql: legacy_sql, standard_sql: standard_sql,
|
819
803
|
params: params }
|
@@ -158,30 +158,28 @@ module Google
|
|
158
158
|
# @param [Boolean] large_results If `true`, allows the query to produce
|
159
159
|
# arbitrarily large result tables at a slight cost in performance.
|
160
160
|
# Requires `table` parameter to be set.
|
161
|
-
# @param [Boolean] flatten Flattens all nested and repeated fields in
|
162
|
-
# the query results. The default value is `true`. `large_results`
|
163
|
-
# parameter must be `true` if this is set to `false`.
|
164
|
-
# @param [Dataset, String] dataset Specifies the default dataset to use
|
165
|
-
# for unqualified table names in the query.
|
166
|
-
# @param [Boolean] legacy_sql Specifies whether to use BigQuery's
|
167
|
-
# [legacy
|
168
|
-
# SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
|
169
|
-
# dialect for this query. If set to false, the query will use
|
170
|
-
# BigQuery's [standard
|
171
|
-
# SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
|
172
|
-
# When set to false, the values of `large_results` and `flatten` are
|
173
|
-
# ignored; the query will be run as if `large_results` is true and
|
174
|
-
# `flatten` is false. Optional. The default value is true.
|
175
161
|
# @param [Boolean] standard_sql Specifies whether to use BigQuery's
|
176
162
|
# [standard
|
177
163
|
# SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
|
178
164
|
# dialect for this query. If set to true, the query will use standard
|
179
165
|
# SQL rather than the [legacy
|
180
166
|
# SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
|
181
|
-
# dialect.
|
182
|
-
#
|
183
|
-
#
|
184
|
-
#
|
167
|
+
# dialect. Optional. The default value is true.
|
168
|
+
# @param [Boolean] legacy_sql Specifies whether to use BigQuery's
|
169
|
+
# [legacy
|
170
|
+
# SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
|
171
|
+
# dialect for this query. If set to false, the query will use
|
172
|
+
# BigQuery's [standard
|
173
|
+
# SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
|
174
|
+
# dialect. Optional. The default value is false.
|
175
|
+
# @param [Boolean] large_results This option is specific to Legacy SQL.
|
176
|
+
# If `true`, allows the query to produce arbitrarily large result
|
177
|
+
# tables at a slight cost in performance. Requires `table` parameter
|
178
|
+
# to be set.
|
179
|
+
# @param [Boolean] flatten This option is specific to Legacy SQL.
|
180
|
+
# Flattens all nested and repeated fields in the query results. The
|
181
|
+
# default value is `true`. `large_results` parameter must be `true` if
|
182
|
+
# this is set to `false`.
|
185
183
|
#
|
186
184
|
# @return [Google::Cloud::Bigquery::QueryJob]
|
187
185
|
#
|
@@ -200,14 +198,14 @@ module Google
|
|
200
198
|
# end
|
201
199
|
# end
|
202
200
|
#
|
203
|
-
# @example Query using
|
201
|
+
# @example Query using legacy SQL:
|
204
202
|
# require "google/cloud/bigquery"
|
205
203
|
#
|
206
204
|
# bigquery = Google::Cloud::Bigquery.new
|
207
205
|
#
|
208
206
|
# job = bigquery.query_job "SELECT name FROM " \
|
209
207
|
# "`my_proj.my_data.my_table`",
|
210
|
-
#
|
208
|
+
# legacy_sql: true
|
211
209
|
#
|
212
210
|
# job.wait_until_done!
|
213
211
|
# if !job.failed?
|
@@ -251,9 +249,9 @@ module Google
|
|
251
249
|
# end
|
252
250
|
#
|
253
251
|
def query_job query, params: nil, priority: "INTERACTIVE", cache: true,
|
254
|
-
table: nil, create: nil, write: nil,
|
255
|
-
|
256
|
-
|
252
|
+
table: nil, create: nil, write: nil, dataset: nil,
|
253
|
+
standard_sql: nil, legacy_sql: nil, large_results: nil,
|
254
|
+
flatten: nil
|
257
255
|
ensure_service!
|
258
256
|
options = { priority: priority, cache: cache, table: table,
|
259
257
|
create: create, write: write,
|
@@ -327,15 +325,6 @@ module Google
|
|
327
325
|
# @param [String] project Specifies the default projectId to assume for
|
328
326
|
# any unqualified table names in the query. Only used if `dataset`
|
329
327
|
# option is set.
|
330
|
-
# @param [Boolean] legacy_sql Specifies whether to use BigQuery's
|
331
|
-
# [legacy
|
332
|
-
# SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
|
333
|
-
# dialect for this query. If set to false, the query will use
|
334
|
-
# BigQuery's [standard
|
335
|
-
# SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
|
336
|
-
# When set to false, the values of `large_results` and `flatten` are
|
337
|
-
# ignored; the query will be run as if `large_results` is true and
|
338
|
-
# `flatten` is false. Optional. The default value is true.
|
339
328
|
# @param [Boolean] standard_sql Specifies whether to use BigQuery's
|
340
329
|
# [standard
|
341
330
|
# SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
|
@@ -345,7 +334,16 @@ module Google
|
|
345
334
|
# dialect. When set to true, the values of `large_results` and
|
346
335
|
# `flatten` are ignored; the query will be run as if `large_results`
|
347
336
|
# is true and `flatten` is false. Optional. The default value is
|
348
|
-
#
|
337
|
+
# true.
|
338
|
+
# @param [Boolean] legacy_sql Specifies whether to use BigQuery's
|
339
|
+
# [legacy
|
340
|
+
# SQL](https://cloud.google.com/bigquery/docs/reference/legacy-sql)
|
341
|
+
# dialect for this query. If set to false, the query will use
|
342
|
+
# BigQuery's [standard
|
343
|
+
# SQL](https://cloud.google.com/bigquery/docs/reference/standard-sql/)
|
344
|
+
# When set to false, the values of `large_results` and `flatten` are
|
345
|
+
# ignored; the query will be run as if `large_results` is true and
|
346
|
+
# `flatten` is false. Optional. The default value is false.
|
349
347
|
#
|
350
348
|
# @return [Google::Cloud::Bigquery::QueryData]
|
351
349
|
#
|
@@ -354,19 +352,19 @@ module Google
|
|
354
352
|
#
|
355
353
|
# bigquery = Google::Cloud::Bigquery.new
|
356
354
|
#
|
357
|
-
# data = bigquery.query "SELECT name FROM
|
355
|
+
# data = bigquery.query "SELECT name FROM `my_proj.my_data.my_table`"
|
358
356
|
#
|
359
357
|
# data.each do |row|
|
360
358
|
# puts row["name"]
|
361
359
|
# end
|
362
360
|
#
|
363
|
-
# @example Query using
|
361
|
+
# @example Query using legacy SQL:
|
364
362
|
# require "google/cloud/bigquery"
|
365
363
|
#
|
366
364
|
# bigquery = Google::Cloud::Bigquery.new
|
367
365
|
#
|
368
|
-
# data = bigquery.query "SELECT name FROM
|
369
|
-
#
|
366
|
+
# data = bigquery.query "SELECT name FROM [my_proj:my_data.my_table]",
|
367
|
+
# legacy_sql: true
|
370
368
|
#
|
371
369
|
# data.each do |row|
|
372
370
|
# puts row["name"]
|
@@ -377,7 +375,7 @@ module Google
|
|
377
375
|
#
|
378
376
|
# bigquery = Google::Cloud::Bigquery.new
|
379
377
|
#
|
380
|
-
# data = bigquery.query "SELECT name FROM
|
378
|
+
# data = bigquery.query "SELECT name FROM `my_proj.my_data.my_table`"
|
381
379
|
#
|
382
380
|
# data.all do |row|
|
383
381
|
# puts row["name"]
|
@@ -389,7 +387,7 @@ module Google
|
|
389
387
|
# bigquery = Google::Cloud::Bigquery.new
|
390
388
|
#
|
391
389
|
# data = bigquery.query "SELECT name " \
|
392
|
-
# "FROM
|
390
|
+
# "FROM `my_proj.my_data.my_table`" \
|
393
391
|
# "WHERE id = ?",
|
394
392
|
# params: [1]
|
395
393
|
#
|
@@ -403,7 +401,7 @@ module Google
|
|
403
401
|
# bigquery = Google::Cloud::Bigquery.new
|
404
402
|
#
|
405
403
|
# data = bigquery.query "SELECT name " \
|
406
|
-
# "FROM
|
404
|
+
# "FROM `my_proj.my_data.my_table`" \
|
407
405
|
# "WHERE id = @id",
|
408
406
|
# params: { id: 1 }
|
409
407
|
#
|
@@ -412,8 +410,8 @@ module Google
|
|
412
410
|
# end
|
413
411
|
#
|
414
412
|
def query query, params: nil, max: nil, timeout: 10000, dryrun: nil,
|
415
|
-
cache: true, dataset: nil, project: nil,
|
416
|
-
|
413
|
+
cache: true, dataset: nil, project: nil, standard_sql: nil,
|
414
|
+
legacy_sql: nil
|
417
415
|
ensure_service!
|
418
416
|
options = { max: max, timeout: timeout, dryrun: dryrun, cache: cache,
|
419
417
|
dataset: dataset, project: project,
|
@@ -710,7 +708,7 @@ module Google
|
|
710
708
|
#
|
711
709
|
# fourpm = bigquery.time 16, 0, 0
|
712
710
|
# data = bigquery.query "SELECT name " \
|
713
|
-
# "FROM
|
711
|
+
# "FROM `my_proj.my_data.my_table`" \
|
714
712
|
# "WHERE time_of_date = @time",
|
715
713
|
# params: { time: fourpm }
|
716
714
|
#
|
@@ -725,7 +723,7 @@ module Google
|
|
725
723
|
#
|
726
724
|
# precise_time = bigquery.time 16, 35, 15.376541
|
727
725
|
# data = bigquery.query "SELECT name " \
|
728
|
-
# "FROM
|
726
|
+
# "FROM `my_proj.my_data.my_table`" \
|
729
727
|
# "WHERE time_of_date >= @time",
|
730
728
|
# params: { time: precise_time }
|
731
729
|
#
|
@@ -55,22 +55,24 @@ module Google
|
|
55
55
|
##
|
56
56
|
# The schema of the data.
|
57
57
|
def schema
|
58
|
-
|
58
|
+
@schema ||= begin
|
59
|
+
s = Schema.from_gapi(@gapi.schema)
|
60
|
+
# call fields so they will be available
|
61
|
+
s.fields
|
62
|
+
s.freeze
|
63
|
+
end
|
59
64
|
end
|
60
65
|
|
61
66
|
##
|
62
67
|
# The fields of the data.
|
63
68
|
def fields
|
64
|
-
|
65
|
-
f = f.to_hash if f.respond_to? :to_hash
|
66
|
-
f = [] if f.nil?
|
67
|
-
f
|
69
|
+
schema.fields
|
68
70
|
end
|
69
71
|
|
70
72
|
##
|
71
73
|
# The name of the columns in the data.
|
72
74
|
def headers
|
73
|
-
|
75
|
+
schema.headers
|
74
76
|
end
|
75
77
|
|
76
78
|
##
|
@@ -202,8 +204,7 @@ module Google
|
|
202
204
|
if gapi.schema.nil?
|
203
205
|
formatted_rows = []
|
204
206
|
else
|
205
|
-
formatted_rows = format_rows gapi.rows,
|
206
|
-
gapi.schema.fields
|
207
|
+
formatted_rows = Convert.format_rows gapi.rows, gapi.schema.fields
|
207
208
|
end
|
208
209
|
|
209
210
|
data = new formatted_rows
|