google-cloud-bigquery 1.42.0 → 1.49.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/CHANGELOG.md +72 -0
- data/lib/google/cloud/bigquery/convert.rb +2 -3
- data/lib/google/cloud/bigquery/dataset.rb +78 -13
- data/lib/google/cloud/bigquery/load_job.rb +495 -26
- data/lib/google/cloud/bigquery/project.rb +373 -1
- data/lib/google/cloud/bigquery/query_job.rb +6 -4
- data/lib/google/cloud/bigquery/schema/field.rb +83 -0
- data/lib/google/cloud/bigquery/schema.rb +351 -44
- data/lib/google/cloud/bigquery/service.rb +25 -5
- data/lib/google/cloud/bigquery/table/async_inserter.rb +1 -0
- data/lib/google/cloud/bigquery/table.rb +458 -32
- data/lib/google/cloud/bigquery/version.rb +1 -1
- data/lib/google/cloud/bigquery.rb +5 -3
- data/lib/google-cloud-bigquery.rb +9 -3
- metadata +18 -164
@@ -300,14 +300,31 @@ module Google
|
|
300
300
|
# At most 1 policy tag is currently allowed.
|
301
301
|
# @param [Integer] max_length The maximum UTF-8 length of strings
|
302
302
|
# allowed in the field.
|
303
|
-
#
|
304
|
-
|
305
|
-
|
306
|
-
|
303
|
+
# @param default_value_expression [String] The default value of a field
|
304
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
305
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
306
|
+
# array. The valid SQL expressions are:
|
307
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
308
|
+
# - The following functions:
|
309
|
+
# `CURRENT_TIMESTAMP`
|
310
|
+
# `CURRENT_TIME`
|
311
|
+
# `CURRENT_DATE`
|
312
|
+
# `CURRENT_DATETIME`
|
313
|
+
# `GENERATE_UUID`
|
314
|
+
# `RAND`
|
315
|
+
# `SESSION_USER`
|
316
|
+
# `ST_GEOPOINT`
|
317
|
+
# - Struct or array composed with the above allowed functions, for example:
|
318
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
319
|
+
#
|
320
|
+
def string name, description: nil, mode: :nullable, policy_tags: nil,
|
321
|
+
max_length: nil, default_value_expression: nil
|
322
|
+
add_field name, :string,
|
307
323
|
description: description,
|
308
324
|
mode: mode,
|
309
325
|
policy_tags: policy_tags,
|
310
|
-
max_length: max_length
|
326
|
+
max_length: max_length,
|
327
|
+
default_value_expression: default_value_expression
|
311
328
|
end
|
312
329
|
|
313
330
|
##
|
@@ -325,9 +342,30 @@ module Google
|
|
325
342
|
# single policy tag for the field. Policy tag identifiers are of
|
326
343
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
327
344
|
# At most 1 policy tag is currently allowed.
|
328
|
-
#
|
329
|
-
|
330
|
-
|
345
|
+
# @param default_value_expression [String] The default value of a field
|
346
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
347
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
348
|
+
# array. The valid SQL expressions are:
|
349
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
350
|
+
# - The following functions:
|
351
|
+
# `CURRENT_TIMESTAMP`
|
352
|
+
# `CURRENT_TIME`
|
353
|
+
# `CURRENT_DATE`
|
354
|
+
# `CURRENT_DATETIME`
|
355
|
+
# `GENERATE_UUID`
|
356
|
+
# `RAND`
|
357
|
+
# `SESSION_USER`
|
358
|
+
# `ST_GEOPOINT`
|
359
|
+
# - Struct or array composed with the above allowed functions, for example:
|
360
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
361
|
+
#
|
362
|
+
def integer name, description: nil, mode: :nullable,
|
363
|
+
policy_tags: nil, default_value_expression: nil
|
364
|
+
add_field name, :integer,
|
365
|
+
description: description,
|
366
|
+
mode: mode,
|
367
|
+
policy_tags: policy_tags,
|
368
|
+
default_value_expression: default_value_expression
|
331
369
|
end
|
332
370
|
|
333
371
|
##
|
@@ -345,9 +383,30 @@ module Google
|
|
345
383
|
# single policy tag for the field. Policy tag identifiers are of
|
346
384
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
347
385
|
# At most 1 policy tag is currently allowed.
|
348
|
-
#
|
349
|
-
|
350
|
-
|
386
|
+
# @param default_value_expression [String] The default value of a field
|
387
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
388
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
389
|
+
# array. The valid SQL expressions are:
|
390
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
391
|
+
# - The following functions:
|
392
|
+
# `CURRENT_TIMESTAMP`
|
393
|
+
# `CURRENT_TIME`
|
394
|
+
# `CURRENT_DATE`
|
395
|
+
# `CURRENT_DATETIME`
|
396
|
+
# `GENERATE_UUID`
|
397
|
+
# `RAND`
|
398
|
+
# `SESSION_USER`
|
399
|
+
# `ST_GEOPOINT`
|
400
|
+
# - Struct or array composed with the above allowed functions, for example:
|
401
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
402
|
+
#
|
403
|
+
def float name, description: nil, mode: :nullable,
|
404
|
+
policy_tags: nil, default_value_expression: nil
|
405
|
+
add_field name, :float,
|
406
|
+
description: description,
|
407
|
+
mode: mode,
|
408
|
+
policy_tags: policy_tags,
|
409
|
+
default_value_expression: default_value_expression
|
351
410
|
end
|
352
411
|
|
353
412
|
##
|
@@ -386,15 +445,32 @@ module Google
|
|
386
445
|
# must be: `1 ≤ (precision - scale) ≤ 29`. Values for scale must
|
387
446
|
# be: `0 ≤ scale ≤ 9`. If the scale value is set, the precision
|
388
447
|
# value must be set as well.
|
389
|
-
#
|
390
|
-
|
391
|
-
|
392
|
-
|
448
|
+
# @param default_value_expression [String] The default value of a field
|
449
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
450
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
451
|
+
# array. The valid SQL expressions are:
|
452
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
453
|
+
# - The following functions:
|
454
|
+
# `CURRENT_TIMESTAMP`
|
455
|
+
# `CURRENT_TIME`
|
456
|
+
# `CURRENT_DATE`
|
457
|
+
# `CURRENT_DATETIME`
|
458
|
+
# `GENERATE_UUID`
|
459
|
+
# `RAND`
|
460
|
+
# `SESSION_USER`
|
461
|
+
# `ST_GEOPOINT`
|
462
|
+
# - Struct or array composed with the above allowed functions, for example:
|
463
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
464
|
+
#
|
465
|
+
def numeric name, description: nil, mode: :nullable, policy_tags: nil,
|
466
|
+
precision: nil, scale: nil, default_value_expression: nil
|
467
|
+
add_field name, :numeric,
|
393
468
|
description: description,
|
394
469
|
mode: mode,
|
395
470
|
policy_tags: policy_tags,
|
396
471
|
precision: precision,
|
397
|
-
scale: scale
|
472
|
+
scale: scale,
|
473
|
+
default_value_expression: default_value_expression
|
398
474
|
end
|
399
475
|
|
400
476
|
##
|
@@ -433,15 +509,32 @@ module Google
|
|
433
509
|
# must be: `1 ≤ (precision - scale) ≤ 38`. Values for scale must
|
434
510
|
# be: `0 ≤ scale ≤ 38`. If the scale value is set, the precision
|
435
511
|
# value must be set as well.
|
436
|
-
#
|
437
|
-
|
438
|
-
|
439
|
-
|
512
|
+
# @param default_value_expression [String] The default value of a field
|
513
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
514
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
515
|
+
# array. The valid SQL expressions are:
|
516
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
517
|
+
# - The following functions:
|
518
|
+
# `CURRENT_TIMESTAMP`
|
519
|
+
# `CURRENT_TIME`
|
520
|
+
# `CURRENT_DATE`
|
521
|
+
# `CURRENT_DATETIME`
|
522
|
+
# `GENERATE_UUID`
|
523
|
+
# `RAND`
|
524
|
+
# `SESSION_USER`
|
525
|
+
# `ST_GEOPOINT`
|
526
|
+
# - Struct or array composed with the above allowed functions, for example:
|
527
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
528
|
+
#
|
529
|
+
def bignumeric name, description: nil, mode: :nullable, policy_tags: nil,
|
530
|
+
precision: nil, scale: nil, default_value_expression: nil
|
531
|
+
add_field name, :bignumeric,
|
440
532
|
description: description,
|
441
533
|
mode: mode,
|
442
534
|
policy_tags: policy_tags,
|
443
535
|
precision: precision,
|
444
|
-
scale: scale
|
536
|
+
scale: scale,
|
537
|
+
default_value_expression: default_value_expression
|
445
538
|
end
|
446
539
|
|
447
540
|
##
|
@@ -459,9 +552,30 @@ module Google
|
|
459
552
|
# single policy tag for the field. Policy tag identifiers are of
|
460
553
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
461
554
|
# At most 1 policy tag is currently allowed.
|
462
|
-
#
|
463
|
-
|
464
|
-
|
555
|
+
# @param default_value_expression [String] The default value of a field
|
556
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
557
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
558
|
+
# array. The valid SQL expressions are:
|
559
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
560
|
+
# - The following functions:
|
561
|
+
# `CURRENT_TIMESTAMP`
|
562
|
+
# `CURRENT_TIME`
|
563
|
+
# `CURRENT_DATE`
|
564
|
+
# `CURRENT_DATETIME`
|
565
|
+
# `GENERATE_UUID`
|
566
|
+
# `RAND`
|
567
|
+
# `SESSION_USER`
|
568
|
+
# `ST_GEOPOINT`
|
569
|
+
# - Struct or array composed with the above allowed functions, for example:
|
570
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
571
|
+
#
|
572
|
+
def boolean name, description: nil, mode: :nullable, policy_tags: nil,
|
573
|
+
default_value_expression: nil
|
574
|
+
add_field name, :boolean,
|
575
|
+
description: description,
|
576
|
+
mode: mode,
|
577
|
+
policy_tags: policy_tags,
|
578
|
+
default_value_expression: default_value_expression
|
465
579
|
end
|
466
580
|
|
467
581
|
##
|
@@ -481,9 +595,31 @@ module Google
|
|
481
595
|
# At most 1 policy tag is currently allowed.
|
482
596
|
# @param [Integer] max_length The maximum the maximum number of
|
483
597
|
# bytes in the field.
|
484
|
-
#
|
485
|
-
|
486
|
-
|
598
|
+
# @param default_value_expression [String] The default value of a field
|
599
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
600
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
601
|
+
# array. The valid SQL expressions are:
|
602
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
603
|
+
# - The following functions:
|
604
|
+
# `CURRENT_TIMESTAMP`
|
605
|
+
# `CURRENT_TIME`
|
606
|
+
# `CURRENT_DATE`
|
607
|
+
# `CURRENT_DATETIME`
|
608
|
+
# `GENERATE_UUID`
|
609
|
+
# `RAND`
|
610
|
+
# `SESSION_USER`
|
611
|
+
# `ST_GEOPOINT`
|
612
|
+
# - Struct or array composed with the above allowed functions, for example:
|
613
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
614
|
+
#
|
615
|
+
def bytes name, description: nil, mode: :nullable,
|
616
|
+
policy_tags: nil, max_length: nil, default_value_expression: nil
|
617
|
+
add_field name, :bytes,
|
618
|
+
description: description,
|
619
|
+
mode: mode,
|
620
|
+
policy_tags: policy_tags,
|
621
|
+
max_length: max_length,
|
622
|
+
default_value_expression: default_value_expression
|
487
623
|
end
|
488
624
|
|
489
625
|
##
|
@@ -501,9 +637,30 @@ module Google
|
|
501
637
|
# single policy tag for the field. Policy tag identifiers are of
|
502
638
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
503
639
|
# At most 1 policy tag is currently allowed.
|
504
|
-
#
|
505
|
-
|
506
|
-
|
640
|
+
# @param default_value_expression [String] The default value of a field
|
641
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
642
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
643
|
+
# array. The valid SQL expressions are:
|
644
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
645
|
+
# - The following functions:
|
646
|
+
# `CURRENT_TIMESTAMP`
|
647
|
+
# `CURRENT_TIME`
|
648
|
+
# `CURRENT_DATE`
|
649
|
+
# `CURRENT_DATETIME`
|
650
|
+
# `GENERATE_UUID`
|
651
|
+
# `RAND`
|
652
|
+
# `SESSION_USER`
|
653
|
+
# `ST_GEOPOINT`
|
654
|
+
# - Struct or array composed with the above allowed functions, for example:
|
655
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
656
|
+
#
|
657
|
+
def timestamp name, description: nil, mode: :nullable,
|
658
|
+
policy_tags: nil, default_value_expression: nil
|
659
|
+
add_field name, :timestamp,
|
660
|
+
description: description,
|
661
|
+
mode: mode,
|
662
|
+
policy_tags: policy_tags,
|
663
|
+
default_value_expression: default_value_expression
|
507
664
|
end
|
508
665
|
|
509
666
|
##
|
@@ -521,9 +678,30 @@ module Google
|
|
521
678
|
# single policy tag for the field. Policy tag identifiers are of
|
522
679
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
523
680
|
# At most 1 policy tag is currently allowed.
|
524
|
-
#
|
525
|
-
|
526
|
-
|
681
|
+
# @param default_value_expression [String] The default value of a field
|
682
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
683
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
684
|
+
# array. The valid SQL expressions are:
|
685
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
686
|
+
# - The following functions:
|
687
|
+
# `CURRENT_TIMESTAMP`
|
688
|
+
# `CURRENT_TIME`
|
689
|
+
# `CURRENT_DATE`
|
690
|
+
# `CURRENT_DATETIME`
|
691
|
+
# `GENERATE_UUID`
|
692
|
+
# `RAND`
|
693
|
+
# `SESSION_USER`
|
694
|
+
# `ST_GEOPOINT`
|
695
|
+
# - Struct or array composed with the above allowed functions, for example:
|
696
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
697
|
+
#
|
698
|
+
def time name, description: nil, mode: :nullable,
|
699
|
+
policy_tags: nil, default_value_expression: nil
|
700
|
+
add_field name, :time,
|
701
|
+
description: description,
|
702
|
+
mode: mode,
|
703
|
+
policy_tags: policy_tags,
|
704
|
+
default_value_expression: default_value_expression
|
527
705
|
end
|
528
706
|
|
529
707
|
##
|
@@ -541,9 +719,30 @@ module Google
|
|
541
719
|
# single policy tag for the field. Policy tag identifiers are of
|
542
720
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
543
721
|
# At most 1 policy tag is currently allowed.
|
544
|
-
#
|
545
|
-
|
546
|
-
|
722
|
+
# @param default_value_expression [String] The default value of a field
|
723
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
724
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
725
|
+
# array. The valid SQL expressions are:
|
726
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
727
|
+
# - The following functions:
|
728
|
+
# `CURRENT_TIMESTAMP`
|
729
|
+
# `CURRENT_TIME`
|
730
|
+
# `CURRENT_DATE`
|
731
|
+
# `CURRENT_DATETIME`
|
732
|
+
# `GENERATE_UUID`
|
733
|
+
# `RAND`
|
734
|
+
# `SESSION_USER`
|
735
|
+
# `ST_GEOPOINT`
|
736
|
+
# - Struct or array composed with the above allowed functions, for example:
|
737
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
738
|
+
#
|
739
|
+
def datetime name, description: nil, mode: :nullable,
|
740
|
+
policy_tags: nil, default_value_expression: nil
|
741
|
+
add_field name, :datetime,
|
742
|
+
description: description,
|
743
|
+
mode: mode,
|
744
|
+
policy_tags: policy_tags,
|
745
|
+
default_value_expression: default_value_expression
|
547
746
|
end
|
548
747
|
|
549
748
|
##
|
@@ -561,9 +760,30 @@ module Google
|
|
561
760
|
# single policy tag for the field. Policy tag identifiers are of
|
562
761
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
563
762
|
# At most 1 policy tag is currently allowed.
|
564
|
-
#
|
565
|
-
|
566
|
-
|
763
|
+
# @param default_value_expression [String] The default value of a field
|
764
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
765
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
766
|
+
# array. The valid SQL expressions are:
|
767
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
768
|
+
# - The following functions:
|
769
|
+
# `CURRENT_TIMESTAMP`
|
770
|
+
# `CURRENT_TIME`
|
771
|
+
# `CURRENT_DATE`
|
772
|
+
# `CURRENT_DATETIME`
|
773
|
+
# `GENERATE_UUID`
|
774
|
+
# `RAND`
|
775
|
+
# `SESSION_USER`
|
776
|
+
# `ST_GEOPOINT`
|
777
|
+
# - Struct or array composed with the above allowed functions, for example:
|
778
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
779
|
+
#
|
780
|
+
def date name, description: nil, mode: :nullable,
|
781
|
+
policy_tags: nil, default_value_expression: nil
|
782
|
+
add_field name, :date,
|
783
|
+
description: description,
|
784
|
+
mode: mode,
|
785
|
+
policy_tags: policy_tags,
|
786
|
+
default_value_expression: default_value_expression
|
567
787
|
end
|
568
788
|
|
569
789
|
##
|
@@ -583,9 +803,73 @@ module Google
|
|
583
803
|
# single policy tag for the field. Policy tag identifiers are of
|
584
804
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
585
805
|
# At most 1 policy tag is currently allowed.
|
806
|
+
# @param default_value_expression [String] The default value of a field
|
807
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
808
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
809
|
+
# array. The valid SQL expressions are:
|
810
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
811
|
+
# - The following functions:
|
812
|
+
# `CURRENT_TIMESTAMP`
|
813
|
+
# `CURRENT_TIME`
|
814
|
+
# `CURRENT_DATE`
|
815
|
+
# `CURRENT_DATETIME`
|
816
|
+
# `GENERATE_UUID`
|
817
|
+
# `RAND`
|
818
|
+
# `SESSION_USER`
|
819
|
+
# `ST_GEOPOINT`
|
820
|
+
# - Struct or array composed with the above allowed functions, for example:
|
821
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
822
|
+
#
|
823
|
+
def geography name, description: nil, mode: :nullable,
|
824
|
+
policy_tags: nil, default_value_expression: nil
|
825
|
+
add_field name, :geography,
|
826
|
+
description: description,
|
827
|
+
mode: mode,
|
828
|
+
policy_tags: policy_tags,
|
829
|
+
default_value_expression: default_value_expression
|
830
|
+
end
|
831
|
+
|
832
|
+
##
|
833
|
+
# Adds a JSON field to the schema.
|
586
834
|
#
|
587
|
-
|
588
|
-
|
835
|
+
# @see https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#json_type
|
836
|
+
#
|
837
|
+
# @param [String] name The field name. The name must contain only
|
838
|
+
# letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`), and must
|
839
|
+
# start with a letter or underscore. The maximum length is 128
|
840
|
+
# characters.
|
841
|
+
# @param [String] description A description of the field.
|
842
|
+
# @param [Symbol] mode The field's mode. The possible values are
|
843
|
+
# `:nullable`, `:required`, and `:repeated`. The default value is
|
844
|
+
# `:nullable`.
|
845
|
+
# @param [Array<String>, String] policy_tags The policy tag list or
|
846
|
+
# single policy tag for the field. Policy tag identifiers are of
|
847
|
+
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
848
|
+
# At most 1 policy tag is currently allowed.
|
849
|
+
# @param default_value_expression [String] The default value of a field
|
850
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
851
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
852
|
+
# array. The valid SQL expressions are:
|
853
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
854
|
+
# - The following functions:
|
855
|
+
# `CURRENT_TIMESTAMP`
|
856
|
+
# `CURRENT_TIME`
|
857
|
+
# `CURRENT_DATE`
|
858
|
+
# `CURRENT_DATETIME`
|
859
|
+
# `GENERATE_UUID`
|
860
|
+
# `RAND`
|
861
|
+
# `SESSION_USER`
|
862
|
+
# `ST_GEOPOINT`
|
863
|
+
# - Struct or array composed with the above allowed functions, for example:
|
864
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
865
|
+
#
|
866
|
+
def json name, description: nil, mode: :nullable,
|
867
|
+
policy_tags: nil, default_value_expression: nil
|
868
|
+
add_field name, :json,
|
869
|
+
description: description,
|
870
|
+
mode: mode,
|
871
|
+
policy_tags: policy_tags,
|
872
|
+
default_value_expression: default_value_expression
|
589
873
|
end
|
590
874
|
|
591
875
|
##
|
@@ -603,6 +887,23 @@ module Google
|
|
603
887
|
# @param [Symbol] mode The field's mode. The possible values are
|
604
888
|
# `:nullable`, `:required`, and `:repeated`. The default value is
|
605
889
|
# `:nullable`.
|
890
|
+
# @param default_value_expression [String] The default value of a field
|
891
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
892
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
893
|
+
# array. The valid SQL expressions are:
|
894
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
895
|
+
# - The following functions:
|
896
|
+
# `CURRENT_TIMESTAMP`
|
897
|
+
# `CURRENT_TIME`
|
898
|
+
# `CURRENT_DATE`
|
899
|
+
# `CURRENT_DATETIME`
|
900
|
+
# `GENERATE_UUID`
|
901
|
+
# `RAND`
|
902
|
+
# `SESSION_USER`
|
903
|
+
# `ST_GEOPOINT`
|
904
|
+
# - Struct or array composed with the above allowed functions, for example:
|
905
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
906
|
+
#
|
606
907
|
# @yield [field] a block for setting the nested record's schema
|
607
908
|
# @yieldparam [Field] field the object accepting the
|
608
909
|
# nested schema
|
@@ -622,11 +923,15 @@ module Google
|
|
622
923
|
# end
|
623
924
|
# end
|
624
925
|
#
|
625
|
-
def record name, description: nil, mode: nil
|
926
|
+
def record name, description: nil, mode: nil,
|
927
|
+
default_value_expression: nil
|
626
928
|
# TODO: do we need to raise if no block was given?
|
627
929
|
raise ArgumentError, "a block is required" unless block_given?
|
628
930
|
|
629
|
-
nested_field = add_field name, :record,
|
931
|
+
nested_field = add_field name, :record,
|
932
|
+
description: description,
|
933
|
+
mode: mode,
|
934
|
+
default_value_expression: default_value_expression
|
630
935
|
yield nested_field
|
631
936
|
nested_field
|
632
937
|
end
|
@@ -675,7 +980,8 @@ module Google
|
|
675
980
|
policy_tags: nil,
|
676
981
|
max_length: nil,
|
677
982
|
precision: nil,
|
678
|
-
scale: nil
|
983
|
+
scale: nil,
|
984
|
+
default_value_expression: nil
|
679
985
|
frozen_check!
|
680
986
|
|
681
987
|
new_gapi = Google::Apis::BigqueryV2::TableFieldSchema.new(
|
@@ -692,6 +998,7 @@ module Google
|
|
692
998
|
new_gapi.max_length = max_length if max_length
|
693
999
|
new_gapi.precision = precision if precision
|
694
1000
|
new_gapi.scale = scale if scale
|
1001
|
+
new_gapi.default_value_expression = default_value_expression if default_value_expression
|
695
1002
|
# Remove any existing field of this name
|
696
1003
|
@gapi.fields ||= []
|
697
1004
|
@gapi.fields.reject! { |f| f.name == new_gapi.name }
|
@@ -41,15 +41,26 @@ module Google
|
|
41
41
|
# @private
|
42
42
|
attr_reader :retries, :timeout, :host
|
43
43
|
|
44
|
+
# @private
|
45
|
+
def universe_domain
|
46
|
+
service.universe_domain
|
47
|
+
end
|
48
|
+
|
44
49
|
##
|
45
50
|
# Creates a new Service instance.
|
46
|
-
def initialize project, credentials,
|
51
|
+
def initialize project, credentials,
|
52
|
+
retries: nil,
|
53
|
+
timeout: nil,
|
54
|
+
host: nil,
|
55
|
+
quota_project: nil,
|
56
|
+
universe_domain: nil
|
47
57
|
@project = project
|
48
58
|
@credentials = credentials
|
49
59
|
@retries = retries
|
50
60
|
@timeout = timeout
|
51
61
|
@host = host
|
52
62
|
@quota_project = quota_project
|
63
|
+
@universe_domain = universe_domain
|
53
64
|
end
|
54
65
|
|
55
66
|
def service
|
@@ -69,7 +80,14 @@ module Google
|
|
69
80
|
service.request_options.query["prettyPrint"] = false
|
70
81
|
service.request_options.quota_project = @quota_project if @quota_project
|
71
82
|
service.authorization = @credentials.client
|
83
|
+
service.universe_domain = @universe_domain
|
72
84
|
service.root_url = host if host
|
85
|
+
begin
|
86
|
+
service.verify_universe_domain!
|
87
|
+
rescue Google::Apis::UniverseDomainError => e
|
88
|
+
# TODO: Create a Google::Cloud::Error subclass for this.
|
89
|
+
raise Google::Cloud::Error, e.message
|
90
|
+
end
|
73
91
|
service
|
74
92
|
end
|
75
93
|
end
|
@@ -490,7 +508,7 @@ module Google
|
|
490
508
|
project_id: m["prj"],
|
491
509
|
dataset_id: m["dts"],
|
492
510
|
table_id: m["tbl"]
|
493
|
-
}.
|
511
|
+
}.compact
|
494
512
|
str_table_ref_hash = default_ref.to_h.merge str_table_ref_hash
|
495
513
|
ref = Google::Apis::BigqueryV2::TableReference.new(**str_table_ref_hash)
|
496
514
|
validate_table_ref ref
|
@@ -506,7 +524,7 @@ module Google
|
|
506
524
|
params = {
|
507
525
|
dataset: Google::Apis::BigqueryV2::DatasetReference.new(**dataset_hash),
|
508
526
|
target_types: dataset_hash[:target_types]
|
509
|
-
}.
|
527
|
+
}.compact
|
510
528
|
Google::Apis::BigqueryV2::DatasetAccessEntry.new(**params)
|
511
529
|
end
|
512
530
|
|
@@ -540,13 +558,15 @@ module Google
|
|
540
558
|
def dataset_ref_from dts, pjt = nil
|
541
559
|
return nil if dts.nil?
|
542
560
|
if dts.respond_to? :dataset_id
|
561
|
+
pjt ||= dts.project_id || @project
|
543
562
|
Google::Apis::BigqueryV2::DatasetReference.new(
|
544
|
-
project_id:
|
563
|
+
project_id: pjt,
|
545
564
|
dataset_id: dts.dataset_id
|
546
565
|
)
|
547
566
|
else
|
567
|
+
pjt ||= @project
|
548
568
|
Google::Apis::BigqueryV2::DatasetReference.new(
|
549
|
-
project_id:
|
569
|
+
project_id: pjt,
|
550
570
|
dataset_id: dts
|
551
571
|
)
|
552
572
|
end
|
@@ -111,6 +111,7 @@ module Google
|
|
111
111
|
# | `DATETIME` | `DateTime` | `DATETIME` does not support time zone. |
|
112
112
|
# | `DATE` | `Date` | |
|
113
113
|
# | `GEOGRAPHY` | `String` | |
|
114
|
+
# | `JSON` | `String` (Stringified JSON) | String, as JSON does not have a schema to verify. |
|
114
115
|
# | `TIMESTAMP` | `Time` | |
|
115
116
|
# | `TIME` | `Google::Cloud::BigQuery::Time` | |
|
116
117
|
# | `BYTES` | `File`, `IO`, `StringIO`, or similar | |
|