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
@@ -2372,6 +2372,11 @@ module Google
|
|
2372
2372
|
# @param [Boolean] dryrun If set, don't actually run this job. Behavior
|
2373
2373
|
# is undefined however for non-query jobs and may result in an error.
|
2374
2374
|
# Deprecated.
|
2375
|
+
# @param [Boolean] create_session If set to true a new session will be created
|
2376
|
+
# and the load job will happen in the table created within that session.
|
2377
|
+
# Note: This will work only for tables in _SESSION dataset
|
2378
|
+
# else the property will be ignored by the backend.
|
2379
|
+
# @param [string] session_id Session ID in which the load job must run.
|
2375
2380
|
#
|
2376
2381
|
# @yield [load_job] a block for setting the load job
|
2377
2382
|
# @yieldparam [LoadJob] load_job the load job object to be updated
|
@@ -2428,7 +2433,7 @@ module Google
|
|
2428
2433
|
def load_job files, format: nil, create: nil, write: nil, projection_fields: nil, jagged_rows: nil,
|
2429
2434
|
quoted_newlines: nil, encoding: nil, delimiter: nil, ignore_unknown: nil, max_bad_records: nil,
|
2430
2435
|
quote: nil, skip_leading: nil, job_id: nil, prefix: nil, labels: nil, autodetect: nil,
|
2431
|
-
null_marker: nil, dryrun: nil
|
2436
|
+
null_marker: nil, dryrun: nil, create_session: nil, session_id: nil, schema: self.schema
|
2432
2437
|
ensure_service!
|
2433
2438
|
|
2434
2439
|
updater = load_job_updater format: format, create: create, write: write, projection_fields: projection_fields,
|
@@ -2436,7 +2441,9 @@ module Google
|
|
2436
2441
|
delimiter: delimiter, ignore_unknown: ignore_unknown,
|
2437
2442
|
max_bad_records: max_bad_records, quote: quote, skip_leading: skip_leading,
|
2438
2443
|
dryrun: dryrun, job_id: job_id, prefix: prefix, schema: schema, labels: labels,
|
2439
|
-
autodetect: autodetect, null_marker: null_marker
|
2444
|
+
autodetect: autodetect, null_marker: null_marker, create_session: create_session,
|
2445
|
+
session_id: session_id
|
2446
|
+
|
2440
2447
|
|
2441
2448
|
yield updater if block_given?
|
2442
2449
|
|
@@ -2551,6 +2558,7 @@ module Google
|
|
2551
2558
|
# file that BigQuery will skip when loading the data. The default
|
2552
2559
|
# value is `0`. This property is useful if you have header rows in the
|
2553
2560
|
# file that should be skipped.
|
2561
|
+
# @param [string] session_id Session ID in which the load job must run.
|
2554
2562
|
#
|
2555
2563
|
# @yield [updater] A block for setting the schema of the destination
|
2556
2564
|
# table and other options for the load job. The schema can be omitted
|
@@ -2612,12 +2620,13 @@ module Google
|
|
2612
2620
|
#
|
2613
2621
|
def load files, format: nil, create: nil, write: nil, projection_fields: nil, jagged_rows: nil,
|
2614
2622
|
quoted_newlines: nil, encoding: nil, delimiter: nil, ignore_unknown: nil, max_bad_records: nil,
|
2615
|
-
quote: nil, skip_leading: nil, autodetect: nil, null_marker: nil,
|
2623
|
+
quote: nil, skip_leading: nil, autodetect: nil, null_marker: nil, session_id: nil,
|
2624
|
+
schema: self.schema, &block
|
2616
2625
|
job = load_job files, format: format, create: create, write: write, projection_fields: projection_fields,
|
2617
2626
|
jagged_rows: jagged_rows, quoted_newlines: quoted_newlines, encoding: encoding,
|
2618
2627
|
delimiter: delimiter, ignore_unknown: ignore_unknown, max_bad_records: max_bad_records,
|
2619
2628
|
quote: quote, skip_leading: skip_leading, autodetect: autodetect,
|
2620
|
-
null_marker: null_marker, &block
|
2629
|
+
null_marker: null_marker, session_id: session_id, schema: schema, &block
|
2621
2630
|
|
2622
2631
|
job.wait_until_done!
|
2623
2632
|
ensure_job_succeeded! job
|
@@ -2639,6 +2648,7 @@ module Google
|
|
2639
2648
|
# | `DATETIME` | `DateTime` | `DATETIME` does not support time zone. |
|
2640
2649
|
# | `DATE` | `Date` | |
|
2641
2650
|
# | `GEOGRAPHY` | `String` | Well-known text (WKT) or GeoJSON. |
|
2651
|
+
# | `JSON` | `String` (Stringified JSON) | String, as JSON does not have a schema to verify. |
|
2642
2652
|
# | `TIMESTAMP` | `Time` | |
|
2643
2653
|
# | `TIME` | `Google::Cloud::BigQuery::Time` | |
|
2644
2654
|
# | `BYTES` | `File`, `IO`, `StringIO`, or similar | |
|
@@ -3114,7 +3124,8 @@ module Google
|
|
3114
3124
|
def load_job_updater format: nil, create: nil, write: nil, projection_fields: nil, jagged_rows: nil,
|
3115
3125
|
quoted_newlines: nil, encoding: nil, delimiter: nil, ignore_unknown: nil,
|
3116
3126
|
max_bad_records: nil, quote: nil, skip_leading: nil, dryrun: nil, schema: nil, job_id: nil,
|
3117
|
-
prefix: nil, labels: nil, autodetect: nil, null_marker: nil
|
3127
|
+
prefix: nil, labels: nil, autodetect: nil, null_marker: nil,
|
3128
|
+
create_session: nil, session_id: nil
|
3118
3129
|
new_job = load_job_gapi table_id, dryrun, job_id: job_id, prefix: prefix
|
3119
3130
|
LoadJob::Updater.new(new_job).tap do |job|
|
3120
3131
|
job.location = location if location # may be table reference
|
@@ -3123,6 +3134,8 @@ module Google
|
|
3123
3134
|
job.schema = schema unless schema.nil?
|
3124
3135
|
job.autodetect = autodetect unless autodetect.nil?
|
3125
3136
|
job.labels = labels unless labels.nil?
|
3137
|
+
job.create_session = create_session unless create_session.nil?
|
3138
|
+
job.session_id = session_id unless session_id.nil?
|
3126
3139
|
load_job_file_options! job, format: format,
|
3127
3140
|
projection_fields: projection_fields,
|
3128
3141
|
jagged_rows: jagged_rows,
|
@@ -3528,6 +3541,22 @@ module Google
|
|
3528
3541
|
# At most 1 policy tag is currently allowed.
|
3529
3542
|
# @param [Integer] max_length The maximum UTF-8 length of strings
|
3530
3543
|
# allowed in the field.
|
3544
|
+
# @param default_value_expression [String] The default value of a field
|
3545
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
3546
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
3547
|
+
# array. The valid SQL expressions are:
|
3548
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
3549
|
+
# - The following functions:
|
3550
|
+
# `CURRENT_TIMESTAMP`
|
3551
|
+
# `CURRENT_TIME`
|
3552
|
+
# `CURRENT_DATE`
|
3553
|
+
# `CURRENT_DATETIME`
|
3554
|
+
# `GENERATE_UUID`
|
3555
|
+
# `RAND`
|
3556
|
+
# `SESSION_USER`
|
3557
|
+
# `ST_GEOPOINT`
|
3558
|
+
# - Struct or array composed with the above allowed functions, for example:
|
3559
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
3531
3560
|
#
|
3532
3561
|
# @example
|
3533
3562
|
# require "google/cloud/bigquery"
|
@@ -3538,9 +3567,20 @@ module Google
|
|
3538
3567
|
# schema.string "first_name", mode: :required
|
3539
3568
|
# end
|
3540
3569
|
#
|
3570
|
+
# @example Add field with default value.
|
3571
|
+
# require "google/cloud/bigquery"
|
3572
|
+
#
|
3573
|
+
# bigquery = Google::Cloud::Bigquery.new
|
3574
|
+
# dataset = bigquery.dataset "my_dataset"
|
3575
|
+
# table = dataset.create_table "my_table" do |schema|
|
3576
|
+
# schema.string "first_name", default_value_expression: "'name'"
|
3577
|
+
# end
|
3578
|
+
#
|
3541
3579
|
# @!group Schema
|
3542
|
-
def string name, description: nil, mode: :nullable, policy_tags: nil, max_length: nil
|
3543
|
-
|
3580
|
+
def string name, description: nil, mode: :nullable, policy_tags: nil, max_length: nil,
|
3581
|
+
default_value_expression: nil
|
3582
|
+
schema.string name, description: description, mode: mode, policy_tags: policy_tags, max_length: max_length,
|
3583
|
+
default_value_expression: default_value_expression
|
3544
3584
|
end
|
3545
3585
|
|
3546
3586
|
##
|
@@ -3560,6 +3600,22 @@ module Google
|
|
3560
3600
|
# single policy tag for the field. Policy tag identifiers are of
|
3561
3601
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
3562
3602
|
# At most 1 policy tag is currently allowed.
|
3603
|
+
# @param default_value_expression [String] The default value of a field
|
3604
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
3605
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
3606
|
+
# array. The valid SQL expressions are:
|
3607
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
3608
|
+
# - The following functions:
|
3609
|
+
# `CURRENT_TIMESTAMP`
|
3610
|
+
# `CURRENT_TIME`
|
3611
|
+
# `CURRENT_DATE`
|
3612
|
+
# `CURRENT_DATETIME`
|
3613
|
+
# `GENERATE_UUID`
|
3614
|
+
# `RAND`
|
3615
|
+
# `SESSION_USER`
|
3616
|
+
# `ST_GEOPOINT`
|
3617
|
+
# - Struct or array composed with the above allowed functions, for example:
|
3618
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
3563
3619
|
#
|
3564
3620
|
# @example
|
3565
3621
|
# require "google/cloud/bigquery"
|
@@ -3570,9 +3626,20 @@ module Google
|
|
3570
3626
|
# schema.integer "age", mode: :required
|
3571
3627
|
# end
|
3572
3628
|
#
|
3629
|
+
# @example Add field with default value.
|
3630
|
+
# require "google/cloud/bigquery"
|
3631
|
+
#
|
3632
|
+
# bigquery = Google::Cloud::Bigquery.new
|
3633
|
+
# dataset = bigquery.dataset "my_dataset"
|
3634
|
+
# table = dataset.create_table "my_table" do |schema|
|
3635
|
+
# schema.integer "age", default_value_expression: "1"
|
3636
|
+
# end
|
3637
|
+
#
|
3573
3638
|
# @!group Schema
|
3574
|
-
def integer name, description: nil, mode: :nullable, policy_tags: nil
|
3575
|
-
|
3639
|
+
def integer name, description: nil, mode: :nullable, policy_tags: nil,
|
3640
|
+
default_value_expression: nil
|
3641
|
+
schema.integer name, description: description, mode: mode, policy_tags: policy_tags,
|
3642
|
+
default_value_expression: default_value_expression
|
3576
3643
|
end
|
3577
3644
|
|
3578
3645
|
##
|
@@ -3592,6 +3659,22 @@ module Google
|
|
3592
3659
|
# single policy tag for the field. Policy tag identifiers are of
|
3593
3660
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
3594
3661
|
# At most 1 policy tag is currently allowed.
|
3662
|
+
# @param default_value_expression [String] The default value of a field
|
3663
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
3664
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
3665
|
+
# array. The valid SQL expressions are:
|
3666
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
3667
|
+
# - The following functions:
|
3668
|
+
# `CURRENT_TIMESTAMP`
|
3669
|
+
# `CURRENT_TIME`
|
3670
|
+
# `CURRENT_DATE`
|
3671
|
+
# `CURRENT_DATETIME`
|
3672
|
+
# `GENERATE_UUID`
|
3673
|
+
# `RAND`
|
3674
|
+
# `SESSION_USER`
|
3675
|
+
# `ST_GEOPOINT`
|
3676
|
+
# - Struct or array composed with the above allowed functions, for example:
|
3677
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
3595
3678
|
#
|
3596
3679
|
# @example
|
3597
3680
|
# require "google/cloud/bigquery"
|
@@ -3602,9 +3685,20 @@ module Google
|
|
3602
3685
|
# schema.float "price", mode: :required
|
3603
3686
|
# end
|
3604
3687
|
#
|
3688
|
+
# @example Add field with default value.
|
3689
|
+
# require "google/cloud/bigquery"
|
3690
|
+
#
|
3691
|
+
# bigquery = Google::Cloud::Bigquery.new
|
3692
|
+
# dataset = bigquery.dataset "my_dataset"
|
3693
|
+
# table = dataset.create_table "my_table" do |schema|
|
3694
|
+
# schema.float "price", default_value_expression: "1.0"
|
3695
|
+
# end
|
3696
|
+
#
|
3605
3697
|
# @!group Schema
|
3606
|
-
def float name, description: nil, mode: :nullable, policy_tags: nil
|
3607
|
-
|
3698
|
+
def float name, description: nil, mode: :nullable, policy_tags: nil,
|
3699
|
+
default_value_expression: nil
|
3700
|
+
schema.float name, description: description, mode: mode, policy_tags: policy_tags,
|
3701
|
+
default_value_expression: default_value_expression
|
3608
3702
|
end
|
3609
3703
|
|
3610
3704
|
##
|
@@ -3645,6 +3739,22 @@ module Google
|
|
3645
3739
|
# must be: `1 ≤ (precision - scale) ≤ 29`. Values for scale must
|
3646
3740
|
# be: `0 ≤ scale ≤ 9`. If the scale value is set, the precision
|
3647
3741
|
# value must be set as well.
|
3742
|
+
# @param default_value_expression [String] The default value of a field
|
3743
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
3744
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
3745
|
+
# array. The valid SQL expressions are:
|
3746
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
3747
|
+
# - The following functions:
|
3748
|
+
# `CURRENT_TIMESTAMP`
|
3749
|
+
# `CURRENT_TIME`
|
3750
|
+
# `CURRENT_DATE`
|
3751
|
+
# `CURRENT_DATETIME`
|
3752
|
+
# `GENERATE_UUID`
|
3753
|
+
# `RAND`
|
3754
|
+
# `SESSION_USER`
|
3755
|
+
# `ST_GEOPOINT`
|
3756
|
+
# - Struct or array composed with the above allowed functions, for example:
|
3757
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
3648
3758
|
#
|
3649
3759
|
# @example
|
3650
3760
|
# require "google/cloud/bigquery"
|
@@ -3655,14 +3765,25 @@ module Google
|
|
3655
3765
|
# schema.numeric "total_cost", mode: :required
|
3656
3766
|
# end
|
3657
3767
|
#
|
3768
|
+
# @example Add field with default value.
|
3769
|
+
# require "google/cloud/bigquery"
|
3770
|
+
#
|
3771
|
+
# bigquery = Google::Cloud::Bigquery.new
|
3772
|
+
# dataset = bigquery.dataset "my_dataset"
|
3773
|
+
# table = dataset.create_table "my_table" do |schema|
|
3774
|
+
# schema.numeric "total_cost", default_value_expression: "1.0e4"
|
3775
|
+
# end
|
3776
|
+
#
|
3658
3777
|
# @!group Schema
|
3659
|
-
def numeric name, description: nil, mode: :nullable, policy_tags: nil, precision: nil, scale: nil
|
3778
|
+
def numeric name, description: nil, mode: :nullable, policy_tags: nil, precision: nil, scale: nil,
|
3779
|
+
default_value_expression: nil
|
3660
3780
|
schema.numeric name,
|
3661
3781
|
description: description,
|
3662
3782
|
mode: mode,
|
3663
3783
|
policy_tags: policy_tags,
|
3664
3784
|
precision: precision,
|
3665
|
-
scale: scale
|
3785
|
+
scale: scale,
|
3786
|
+
default_value_expression: default_value_expression
|
3666
3787
|
end
|
3667
3788
|
|
3668
3789
|
##
|
@@ -3703,6 +3824,22 @@ module Google
|
|
3703
3824
|
# must be: `1 ≤ (precision - scale) ≤ 38`. Values for scale must
|
3704
3825
|
# be: `0 ≤ scale ≤ 38`. If the scale value is set, the precision
|
3705
3826
|
# value must be set as well.
|
3827
|
+
# @param default_value_expression [String] The default value of a field
|
3828
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
3829
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
3830
|
+
# array. The valid SQL expressions are:
|
3831
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
3832
|
+
# - The following functions:
|
3833
|
+
# `CURRENT_TIMESTAMP`
|
3834
|
+
# `CURRENT_TIME`
|
3835
|
+
# `CURRENT_DATE`
|
3836
|
+
# `CURRENT_DATETIME`
|
3837
|
+
# `GENERATE_UUID`
|
3838
|
+
# `RAND`
|
3839
|
+
# `SESSION_USER`
|
3840
|
+
# `ST_GEOPOINT`
|
3841
|
+
# - Struct or array composed with the above allowed functions, for example:
|
3842
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
3706
3843
|
#
|
3707
3844
|
# @example
|
3708
3845
|
# require "google/cloud/bigquery"
|
@@ -3713,14 +3850,25 @@ module Google
|
|
3713
3850
|
# schema.bignumeric "total_cost", mode: :required
|
3714
3851
|
# end
|
3715
3852
|
#
|
3853
|
+
# @example Add field with default value.
|
3854
|
+
# require "google/cloud/bigquery"
|
3855
|
+
#
|
3856
|
+
# bigquery = Google::Cloud::Bigquery.new
|
3857
|
+
# dataset = bigquery.dataset "my_dataset"
|
3858
|
+
# table = dataset.create_table "my_table" do |schema|
|
3859
|
+
# schema.bignumeric "total_cost", default_value_expression: "1.0e4"
|
3860
|
+
# end
|
3861
|
+
#
|
3716
3862
|
# @!group Schema
|
3717
|
-
def bignumeric name, description: nil, mode: :nullable, policy_tags: nil, precision: nil, scale: nil
|
3863
|
+
def bignumeric name, description: nil, mode: :nullable, policy_tags: nil, precision: nil, scale: nil,
|
3864
|
+
default_value_expression: nil
|
3718
3865
|
schema.bignumeric name,
|
3719
3866
|
description: description,
|
3720
3867
|
mode: mode,
|
3721
3868
|
policy_tags: policy_tags,
|
3722
3869
|
precision: precision,
|
3723
|
-
scale: scale
|
3870
|
+
scale: scale,
|
3871
|
+
default_value_expression: default_value_expression
|
3724
3872
|
end
|
3725
3873
|
|
3726
3874
|
##
|
@@ -3740,6 +3888,22 @@ module Google
|
|
3740
3888
|
# single policy tag for the field. Policy tag identifiers are of
|
3741
3889
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
3742
3890
|
# At most 1 policy tag is currently allowed.
|
3891
|
+
# @param default_value_expression [String] The default value of a field
|
3892
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
3893
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
3894
|
+
# array. The valid SQL expressions are:
|
3895
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
3896
|
+
# - The following functions:
|
3897
|
+
# `CURRENT_TIMESTAMP`
|
3898
|
+
# `CURRENT_TIME`
|
3899
|
+
# `CURRENT_DATE`
|
3900
|
+
# `CURRENT_DATETIME`
|
3901
|
+
# `GENERATE_UUID`
|
3902
|
+
# `RAND`
|
3903
|
+
# `SESSION_USER`
|
3904
|
+
# `ST_GEOPOINT`
|
3905
|
+
# - Struct or array composed with the above allowed functions, for example:
|
3906
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
3743
3907
|
#
|
3744
3908
|
# @example
|
3745
3909
|
# require "google/cloud/bigquery"
|
@@ -3750,9 +3914,20 @@ module Google
|
|
3750
3914
|
# schema.boolean "active", mode: :required
|
3751
3915
|
# end
|
3752
3916
|
#
|
3917
|
+
# @example Add field with default value.
|
3918
|
+
# require "google/cloud/bigquery"
|
3919
|
+
#
|
3920
|
+
# bigquery = Google::Cloud::Bigquery.new
|
3921
|
+
# dataset = bigquery.dataset "my_dataset"
|
3922
|
+
# table = dataset.create_table "my_table" do |schema|
|
3923
|
+
# schema.boolean "active", default_value_expression: "true"
|
3924
|
+
# end
|
3925
|
+
#
|
3753
3926
|
# @!group Schema
|
3754
|
-
def boolean name, description: nil, mode: :nullable, policy_tags: nil
|
3755
|
-
|
3927
|
+
def boolean name, description: nil, mode: :nullable, policy_tags: nil,
|
3928
|
+
default_value_expression: nil
|
3929
|
+
schema.boolean name, description: description, mode: mode, policy_tags: policy_tags,
|
3930
|
+
default_value_expression: default_value_expression
|
3756
3931
|
end
|
3757
3932
|
|
3758
3933
|
##
|
@@ -3774,6 +3949,22 @@ module Google
|
|
3774
3949
|
# At most 1 policy tag is currently allowed.
|
3775
3950
|
# @param [Integer] max_length The maximum the maximum number of
|
3776
3951
|
# bytes in the field.
|
3952
|
+
# @param default_value_expression [String] The default value of a field
|
3953
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
3954
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
3955
|
+
# array. The valid SQL expressions are:
|
3956
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
3957
|
+
# - The following functions:
|
3958
|
+
# `CURRENT_TIMESTAMP`
|
3959
|
+
# `CURRENT_TIME`
|
3960
|
+
# `CURRENT_DATE`
|
3961
|
+
# `CURRENT_DATETIME`
|
3962
|
+
# `GENERATE_UUID`
|
3963
|
+
# `RAND`
|
3964
|
+
# `SESSION_USER`
|
3965
|
+
# `ST_GEOPOINT`
|
3966
|
+
# - Struct or array composed with the above allowed functions, for example:
|
3967
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
3777
3968
|
#
|
3778
3969
|
# @example
|
3779
3970
|
# require "google/cloud/bigquery"
|
@@ -3784,9 +3975,20 @@ module Google
|
|
3784
3975
|
# schema.bytes "avatar", mode: :required
|
3785
3976
|
# end
|
3786
3977
|
#
|
3978
|
+
# @example Add field with default value.
|
3979
|
+
# require "google/cloud/bigquery"
|
3980
|
+
#
|
3981
|
+
# bigquery = Google::Cloud::Bigquery.new
|
3982
|
+
# dataset = bigquery.dataset "my_dataset"
|
3983
|
+
# table = dataset.create_table "my_table" do |schema|
|
3984
|
+
# schema.bytes "avatar", default_value_expression: "b'101'"
|
3985
|
+
# end
|
3986
|
+
#
|
3787
3987
|
# @!group Schema
|
3788
|
-
def bytes name, description: nil, mode: :nullable, policy_tags: nil, max_length: nil
|
3789
|
-
|
3988
|
+
def bytes name, description: nil, mode: :nullable, policy_tags: nil, max_length: nil,
|
3989
|
+
default_value_expression: nil
|
3990
|
+
schema.bytes name, description: description, mode: mode, policy_tags: policy_tags, max_length: max_length,
|
3991
|
+
default_value_expression: default_value_expression
|
3790
3992
|
end
|
3791
3993
|
|
3792
3994
|
##
|
@@ -3806,6 +4008,22 @@ module Google
|
|
3806
4008
|
# single policy tag for the field. Policy tag identifiers are of
|
3807
4009
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
3808
4010
|
# At most 1 policy tag is currently allowed.
|
4011
|
+
# @param default_value_expression [String] The default value of a field
|
4012
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
4013
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
4014
|
+
# array. The valid SQL expressions are:
|
4015
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
4016
|
+
# - The following functions:
|
4017
|
+
# `CURRENT_TIMESTAMP`
|
4018
|
+
# `CURRENT_TIME`
|
4019
|
+
# `CURRENT_DATE`
|
4020
|
+
# `CURRENT_DATETIME`
|
4021
|
+
# `GENERATE_UUID`
|
4022
|
+
# `RAND`
|
4023
|
+
# `SESSION_USER`
|
4024
|
+
# `ST_GEOPOINT`
|
4025
|
+
# - Struct or array composed with the above allowed functions, for example:
|
4026
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
3809
4027
|
#
|
3810
4028
|
# @example
|
3811
4029
|
# require "google/cloud/bigquery"
|
@@ -3816,9 +4034,20 @@ module Google
|
|
3816
4034
|
# schema.timestamp "creation_date", mode: :required
|
3817
4035
|
# end
|
3818
4036
|
#
|
4037
|
+
# @example Add field with default value.
|
4038
|
+
# require "google/cloud/bigquery"
|
4039
|
+
#
|
4040
|
+
# bigquery = Google::Cloud::Bigquery.new
|
4041
|
+
# dataset = bigquery.dataset "my_dataset"
|
4042
|
+
# table = dataset.create_table "my_table" do |schema|
|
4043
|
+
# schema.timestamp "creation_date", default_value_expression: "CURRENT_TIMESTAMP"
|
4044
|
+
# end
|
4045
|
+
#
|
3819
4046
|
# @!group Schema
|
3820
|
-
def timestamp name, description: nil, mode: :nullable, policy_tags: nil
|
3821
|
-
|
4047
|
+
def timestamp name, description: nil, mode: :nullable, policy_tags: nil,
|
4048
|
+
default_value_expression: nil
|
4049
|
+
schema.timestamp name, description: description, mode: mode, policy_tags: policy_tags,
|
4050
|
+
default_value_expression: default_value_expression
|
3822
4051
|
end
|
3823
4052
|
|
3824
4053
|
##
|
@@ -3838,6 +4067,22 @@ module Google
|
|
3838
4067
|
# single policy tag for the field. Policy tag identifiers are of
|
3839
4068
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
3840
4069
|
# At most 1 policy tag is currently allowed.
|
4070
|
+
# @param default_value_expression [String] The default value of a field
|
4071
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
4072
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
4073
|
+
# array. The valid SQL expressions are:
|
4074
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
4075
|
+
# - The following functions:
|
4076
|
+
# `CURRENT_TIMESTAMP`
|
4077
|
+
# `CURRENT_TIME`
|
4078
|
+
# `CURRENT_DATE`
|
4079
|
+
# `CURRENT_DATETIME`
|
4080
|
+
# `GENERATE_UUID`
|
4081
|
+
# `RAND`
|
4082
|
+
# `SESSION_USER`
|
4083
|
+
# `ST_GEOPOINT`
|
4084
|
+
# - Struct or array composed with the above allowed functions, for example:
|
4085
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
3841
4086
|
#
|
3842
4087
|
# @example
|
3843
4088
|
# require "google/cloud/bigquery"
|
@@ -3848,9 +4093,20 @@ module Google
|
|
3848
4093
|
# schema.time "duration", mode: :required
|
3849
4094
|
# end
|
3850
4095
|
#
|
4096
|
+
# @example Add field with default value.
|
4097
|
+
# require "google/cloud/bigquery"
|
4098
|
+
#
|
4099
|
+
# bigquery = Google::Cloud::Bigquery.new
|
4100
|
+
# dataset = bigquery.dataset "my_dataset"
|
4101
|
+
# table = dataset.create_table "my_table" do |schema|
|
4102
|
+
# schema.time "duration", default_value_expression: "CURRENT_TIME"
|
4103
|
+
# end
|
4104
|
+
#
|
3851
4105
|
# @!group Schema
|
3852
|
-
def time name, description: nil, mode: :nullable, policy_tags: nil
|
3853
|
-
|
4106
|
+
def time name, description: nil, mode: :nullable, policy_tags: nil,
|
4107
|
+
default_value_expression: nil
|
4108
|
+
schema.time name, description: description, mode: mode, policy_tags: policy_tags,
|
4109
|
+
default_value_expression: default_value_expression
|
3854
4110
|
end
|
3855
4111
|
|
3856
4112
|
##
|
@@ -3870,6 +4126,22 @@ module Google
|
|
3870
4126
|
# single policy tag for the field. Policy tag identifiers are of
|
3871
4127
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
3872
4128
|
# At most 1 policy tag is currently allowed.
|
4129
|
+
# @param default_value_expression [String] The default value of a field
|
4130
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
4131
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
4132
|
+
# array. The valid SQL expressions are:
|
4133
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
4134
|
+
# - The following functions:
|
4135
|
+
# `CURRENT_TIMESTAMP`
|
4136
|
+
# `CURRENT_TIME`
|
4137
|
+
# `CURRENT_DATE`
|
4138
|
+
# `CURRENT_DATETIME`
|
4139
|
+
# `GENERATE_UUID`
|
4140
|
+
# `RAND`
|
4141
|
+
# `SESSION_USER`
|
4142
|
+
# `ST_GEOPOINT`
|
4143
|
+
# - Struct or array composed with the above allowed functions, for example:
|
4144
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
3873
4145
|
#
|
3874
4146
|
# @example
|
3875
4147
|
# require "google/cloud/bigquery"
|
@@ -3880,9 +4152,20 @@ module Google
|
|
3880
4152
|
# schema.datetime "target_end", mode: :required
|
3881
4153
|
# end
|
3882
4154
|
#
|
4155
|
+
# @example Add field with default value.
|
4156
|
+
# require "google/cloud/bigquery"
|
4157
|
+
#
|
4158
|
+
# bigquery = Google::Cloud::Bigquery.new
|
4159
|
+
# dataset = bigquery.dataset "my_dataset"
|
4160
|
+
# table = dataset.create_table "my_table" do |schema|
|
4161
|
+
# schema.datetime "target_end", default_value_expression: "CURRENT_DATETIME"
|
4162
|
+
# end
|
4163
|
+
#
|
3883
4164
|
# @!group Schema
|
3884
|
-
def datetime name, description: nil, mode: :nullable, policy_tags: nil
|
3885
|
-
|
4165
|
+
def datetime name, description: nil, mode: :nullable, policy_tags: nil,
|
4166
|
+
default_value_expression: nil
|
4167
|
+
schema.datetime name, description: description, mode: mode, policy_tags: policy_tags,
|
4168
|
+
default_value_expression: default_value_expression
|
3886
4169
|
end
|
3887
4170
|
|
3888
4171
|
##
|
@@ -3902,6 +4185,22 @@ module Google
|
|
3902
4185
|
# single policy tag for the field. Policy tag identifiers are of
|
3903
4186
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
3904
4187
|
# At most 1 policy tag is currently allowed.
|
4188
|
+
# @param default_value_expression [String] The default value of a field
|
4189
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
4190
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
4191
|
+
# array. The valid SQL expressions are:
|
4192
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
4193
|
+
# - The following functions:
|
4194
|
+
# `CURRENT_TIMESTAMP`
|
4195
|
+
# `CURRENT_TIME`
|
4196
|
+
# `CURRENT_DATE`
|
4197
|
+
# `CURRENT_DATETIME`
|
4198
|
+
# `GENERATE_UUID`
|
4199
|
+
# `RAND`
|
4200
|
+
# `SESSION_USER`
|
4201
|
+
# `ST_GEOPOINT`
|
4202
|
+
# - Struct or array composed with the above allowed functions, for example:
|
4203
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
3905
4204
|
#
|
3906
4205
|
# @example
|
3907
4206
|
# require "google/cloud/bigquery"
|
@@ -3912,9 +4211,20 @@ module Google
|
|
3912
4211
|
# schema.date "birthday", mode: :required
|
3913
4212
|
# end
|
3914
4213
|
#
|
4214
|
+
# @example Add field with default value.
|
4215
|
+
# require "google/cloud/bigquery"
|
4216
|
+
#
|
4217
|
+
# bigquery = Google::Cloud::Bigquery.new
|
4218
|
+
# dataset = bigquery.dataset "my_dataset"
|
4219
|
+
# table = dataset.create_table "my_table" do |schema|
|
4220
|
+
# schema.date "birthday", default_value_expression: "CURRENT_DATE"
|
4221
|
+
# end
|
4222
|
+
#
|
3915
4223
|
# @!group Schema
|
3916
|
-
def date name, description: nil, mode: :nullable, policy_tags: nil
|
3917
|
-
|
4224
|
+
def date name, description: nil, mode: :nullable, policy_tags: nil,
|
4225
|
+
default_value_expression: nil
|
4226
|
+
schema.date name, description: description, mode: mode, policy_tags: policy_tags,
|
4227
|
+
default_value_expression: default_value_expression
|
3918
4228
|
end
|
3919
4229
|
|
3920
4230
|
##
|
@@ -3934,6 +4244,22 @@ module Google
|
|
3934
4244
|
# single policy tag for the field. Policy tag identifiers are of
|
3935
4245
|
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
3936
4246
|
# At most 1 policy tag is currently allowed.
|
4247
|
+
# @param default_value_expression [String] The default value of a field
|
4248
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
4249
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
4250
|
+
# array. The valid SQL expressions are:
|
4251
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
4252
|
+
# - The following functions:
|
4253
|
+
# `CURRENT_TIMESTAMP`
|
4254
|
+
# `CURRENT_TIME`
|
4255
|
+
# `CURRENT_DATE`
|
4256
|
+
# `CURRENT_DATETIME`
|
4257
|
+
# `GENERATE_UUID`
|
4258
|
+
# `RAND`
|
4259
|
+
# `SESSION_USER`
|
4260
|
+
# `ST_GEOPOINT`
|
4261
|
+
# - Struct or array composed with the above allowed functions, for example:
|
4262
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
3937
4263
|
#
|
3938
4264
|
# @example
|
3939
4265
|
# require "google/cloud/bigquery"
|
@@ -3944,8 +4270,79 @@ module Google
|
|
3944
4270
|
# schema.geography "home", mode: :required
|
3945
4271
|
# end
|
3946
4272
|
#
|
3947
|
-
|
3948
|
-
|
4273
|
+
# @example Add field with default value.
|
4274
|
+
# require "google/cloud/bigquery"
|
4275
|
+
#
|
4276
|
+
# bigquery = Google::Cloud::Bigquery.new
|
4277
|
+
# dataset = bigquery.dataset "my_dataset"
|
4278
|
+
# table = dataset.create_table "my_table" do |schema|
|
4279
|
+
# schema.geography "home", default_value_expression: "ST_GEOGPOINT(-122.084801, 37.422131)"
|
4280
|
+
# end
|
4281
|
+
#
|
4282
|
+
def geography name, description: nil, mode: :nullable, policy_tags: nil,
|
4283
|
+
default_value_expression: nil
|
4284
|
+
schema.geography name, description: description, mode: mode, policy_tags: policy_tags,
|
4285
|
+
default_value_expression: default_value_expression
|
4286
|
+
end
|
4287
|
+
|
4288
|
+
##
|
4289
|
+
# Adds an json field to the schema.
|
4290
|
+
#
|
4291
|
+
# See {Schema#json}.
|
4292
|
+
# https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types#json_type
|
4293
|
+
#
|
4294
|
+
# @param [String] name The field name. The name must contain only
|
4295
|
+
# letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`), and must
|
4296
|
+
# start with a letter or underscore. The maximum length is 128
|
4297
|
+
# characters.
|
4298
|
+
# @param [String] description A description of the field.
|
4299
|
+
# @param [Symbol] mode The field's mode. The possible values are
|
4300
|
+
# `:nullable`, `:required`, and `:repeated`. The default value is
|
4301
|
+
# `:nullable`.
|
4302
|
+
# @param [Array<String>, String] policy_tags The policy tag list or
|
4303
|
+
# single policy tag for the field. Policy tag identifiers are of
|
4304
|
+
# the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
|
4305
|
+
# At most 1 policy tag is currently allowed.
|
4306
|
+
# @param default_value_expression [String] The default value of a field
|
4307
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
4308
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
4309
|
+
# array. The valid SQL expressions are:
|
4310
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
4311
|
+
# - The following functions:
|
4312
|
+
# `CURRENT_TIMESTAMP`
|
4313
|
+
# `CURRENT_TIME`
|
4314
|
+
# `CURRENT_DATE`
|
4315
|
+
# `CURRENT_DATETIME`
|
4316
|
+
# `GENERATE_UUID`
|
4317
|
+
# `RAND`
|
4318
|
+
# `SESSION_USER`
|
4319
|
+
# `ST_GEOPOINT`
|
4320
|
+
# - Struct or array composed with the above allowed functions, for example:
|
4321
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
4322
|
+
#
|
4323
|
+
# @example
|
4324
|
+
# require "google/cloud/bigquery"
|
4325
|
+
#
|
4326
|
+
# bigquery = Google::Cloud::Bigquery.new
|
4327
|
+
# dataset = bigquery.dataset "my_dataset"
|
4328
|
+
# table = dataset.create_table "my_table" do |schema|
|
4329
|
+
# schema.json "person", mode: :required
|
4330
|
+
# end
|
4331
|
+
#
|
4332
|
+
# @example Add field with default value.
|
4333
|
+
# require "google/cloud/bigquery"
|
4334
|
+
#
|
4335
|
+
# bigquery = Google::Cloud::Bigquery.new
|
4336
|
+
# dataset = bigquery.dataset "my_dataset"
|
4337
|
+
# table = dataset.create_table "my_table" do |schema|
|
4338
|
+
# schema.json "person", default_value_expression: "JSON '{"name": "Alice", "age": 30}'"
|
4339
|
+
# end
|
4340
|
+
#
|
4341
|
+
# @!group Schema
|
4342
|
+
def json name, description: nil, mode: :nullable, policy_tags: nil,
|
4343
|
+
default_value_expression: nil
|
4344
|
+
schema.json name, description: description, mode: mode, policy_tags: policy_tags,
|
4345
|
+
default_value_expression: default_value_expression
|
3949
4346
|
end
|
3950
4347
|
|
3951
4348
|
##
|
@@ -3965,6 +4362,23 @@ module Google
|
|
3965
4362
|
# @param [Symbol] mode The field's mode. The possible values are
|
3966
4363
|
# `:nullable`, `:required`, and `:repeated`. The default value is
|
3967
4364
|
# `:nullable`.
|
4365
|
+
# @param default_value_expression [String] The default value of a field
|
4366
|
+
# using a SQL expression. It can only be set for top level fields (columns).
|
4367
|
+
# Use a struct or array expression to specify default value for the entire struct or
|
4368
|
+
# array. The valid SQL expressions are:
|
4369
|
+
# - Literals for all data types, including STRUCT and ARRAY.
|
4370
|
+
# - The following functions:
|
4371
|
+
# `CURRENT_TIMESTAMP`
|
4372
|
+
# `CURRENT_TIME`
|
4373
|
+
# `CURRENT_DATE`
|
4374
|
+
# `CURRENT_DATETIME`
|
4375
|
+
# `GENERATE_UUID`
|
4376
|
+
# `RAND`
|
4377
|
+
# `SESSION_USER`
|
4378
|
+
# `ST_GEOPOINT`
|
4379
|
+
# - Struct or array composed with the above allowed functions, for example:
|
4380
|
+
# "[CURRENT_DATE(), DATE '2020-01-01'"]
|
4381
|
+
#
|
3968
4382
|
# @yield [nested_schema] a block for setting the nested schema
|
3969
4383
|
# @yieldparam [Schema] nested_schema the object accepting the
|
3970
4384
|
# nested schema
|
@@ -3981,10 +4395,22 @@ module Google
|
|
3981
4395
|
# end
|
3982
4396
|
# end
|
3983
4397
|
#
|
3984
|
-
#
|
4398
|
+
# @example Add field with default value.
|
4399
|
+
# require "google/cloud/bigquery"
|
4400
|
+
#
|
4401
|
+
# bigquery = Google::Cloud::Bigquery.new
|
4402
|
+
# dataset = bigquery.dataset "my_dataset"
|
4403
|
+
# table = dataset.create_table "my_table" do |schema|
|
4404
|
+
# schema.record "cities_lived", mode: :repeated, "[STRUCT('place',10)]" do |cities_lived|
|
4405
|
+
# cities_lived.string "place", mode: :required
|
4406
|
+
# cities_lived.integer "number_of_years", mode: :required
|
4407
|
+
# end
|
4408
|
+
# end
|
3985
4409
|
#
|
3986
|
-
|
3987
|
-
|
4410
|
+
# @!group Schema
|
4411
|
+
def record name, description: nil, mode: nil, default_value_expression: nil, &block
|
4412
|
+
schema.record name, description: description, mode: mode,
|
4413
|
+
default_value_expression: default_value_expression, &block
|
3988
4414
|
end
|
3989
4415
|
|
3990
4416
|
##
|