Class: Google::Cloud::Bigquery::LoadJob::Updater
- Inherits:
-
Google::Cloud::Bigquery::LoadJob
- Object
- Job
- Google::Cloud::Bigquery::LoadJob
- Google::Cloud::Bigquery::LoadJob::Updater
- Defined in:
- lib/google/cloud/bigquery/load_job.rb
Overview
Yielded to a block to accumulate changes for a patch request.
Attributes collapse
-
#updates ⇒ Object
readonly
A list of attributes that were updated.
Attributes collapse
-
#autodetect=(val) ⇒ Object
Allows BigQuery to autodetect the schema.
-
#create=(new_create) ⇒ Object
Sets the create disposition.
-
#delimiter=(val) ⇒ Object
Sets the separator for fields in a CSV file.
-
#encoding=(val) ⇒ Object
Sets the character encoding of the data.
-
#encryption=(val) ⇒ Object
Sets the encryption configuration of the destination table.
-
#format=(new_format) ⇒ Object
Sets the source file format.
-
#ignore_unknown=(val) ⇒ Object
Allows unknown columns to be ignored.
-
#jagged_rows=(val) ⇒ Object
Sets flag for allowing jagged rows.
-
#labels=(val) ⇒ Object
Sets the labels to use for the load job.
-
#location=(value) ⇒ Object
Sets the geographic location where the job should run.
-
#max_bad_records=(val) ⇒ Object
Sets the maximum number of bad records that can be ignored.
-
#null_marker=(val) ⇒ Object
Sets the string that represents a null value in a CSV file.
-
#projection_fields=(new_fields) ⇒ Object
Sets the projection fields.
-
#quote=(val) ⇒ Object
Sets the character to use to quote string values in CSVs.
-
#quoted_newlines=(val) ⇒ Object
Allows quoted data sections to contain newline characters in CSV.
-
#schema_update_options=(new_options) ⇒ Object
Sets the schema update options, which allow the schema of the destination table to be updated as a side effect of the load job if a schema is autodetected or supplied in the job configuration.
-
#skip_leading=(val) ⇒ Object
Sets the number of leading rows to skip in the file.
-
#source_uris=(new_uris) ⇒ Object
Sets the source URIs to load.
-
#time_partitioning_expiration=(expiration) ⇒ Object
Sets the partition expiration for the destination table.
-
#time_partitioning_field=(field) ⇒ Object
Sets the field on which to partition the destination table.
-
#time_partitioning_require_filter=(val) ⇒ Object
If set to true, queries over the destination table will require a partition filter that can be used for partition elimination to be specified.
-
#time_partitioning_type=(type) ⇒ Object
Sets the partitioning for the destination table.
-
#write=(new_write) ⇒ Object
Sets the write disposition.
Schema collapse
-
#boolean(name, description: nil, mode: :nullable) ⇒ Object
Adds a boolean field to the schema.
-
#bytes(name, description: nil, mode: :nullable) ⇒ Object
Adds a bytes field to the schema.
-
#check_for_mutated_schema! ⇒ Object
Make sure any access changes are saved.
-
#date(name, description: nil, mode: :nullable) ⇒ Object
Adds a date field to the schema.
-
#datetime(name, description: nil, mode: :nullable) ⇒ Object
Adds a datetime field to the schema.
-
#float(name, description: nil, mode: :nullable) ⇒ Object
Adds a floating-point number field to the schema.
-
#integer(name, description: nil, mode: :nullable) ⇒ Object
Adds an integer field to the schema.
-
#record(name, description: nil, mode: nil) {|nested_schema| ... } ⇒ Object
Adds a record field to the schema.
-
#schema(replace: false) {|schema| ... } ⇒ Google::Cloud::Bigquery::Schema
Returns the table's schema.
-
#schema=(new_schema) ⇒ Object
Sets the schema of the destination table.
-
#string(name, description: nil, mode: :nullable) ⇒ Object
Adds a string field to the schema.
-
#time(name, description: nil, mode: :nullable) ⇒ Object
Adds a time field to the schema.
-
#timestamp(name, description: nil, mode: :nullable) ⇒ Object
Adds a timestamp field to the schema.
Methods inherited from Google::Cloud::Bigquery::LoadJob
#allow_jagged_rows?, #autodetect?, #backup?, #csv?, #delimiter, #destination, #encryption, #ignore_unknown_values?, #input_file_bytes, #input_files, #iso8859_1?, #json?, #max_bad_records, #null_marker, #output_bytes, #output_rows, #quote, #quoted_newlines?, #schema_update_options, #skip_leading_rows, #sources, #time_partitioning?, #time_partitioning_expiration, #time_partitioning_field, #time_partitioning_require_filter?, #time_partitioning_type, #utf8?
Methods inherited from Job
#cancel, #configuration, #created_at, #done?, #ended_at, #error, #errors, #failed?, #job_id, #labels, #location, #pending?, #project_id, #reload!, #rerun!, #running?, #started_at, #state, #statistics, #status, #user_email, #wait_until_done!
Instance Attribute Details
#updates ⇒ Object (readonly)
A list of attributes that were updated.
432 433 434 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 432 def updates @updates end |
Instance Method Details
#autodetect=(val) ⇒ Object
Allows BigQuery to autodetect the schema.
1003 1004 1005 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 1003 def autodetect= val @gapi.configuration.load.update! autodetect: val end |
#boolean(name, description: nil, mode: :nullable) ⇒ Object
Adds a boolean field to the schema.
See Schema#boolean.
626 627 628 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 626 def boolean name, description: nil, mode: :nullable schema.boolean name, description: description, mode: mode end |
#bytes(name, description: nil, mode: :nullable) ⇒ Object
Adds a bytes field to the schema.
See Schema#bytes.
654 655 656 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 654 def bytes name, description: nil, mode: :nullable schema.bytes name, description: description, mode: mode end |
#check_for_mutated_schema! ⇒ Object
Make sure any access changes are saved
810 811 812 813 814 815 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 810 def check_for_mutated_schema! return if @schema.nil? return unless @schema.changed? @gapi.configuration.load.schema = @schema.to_gapi patch_gapi! :schema end |
#create=(new_create) ⇒ Object
Sets the create disposition.
This specifies whether the job is allowed to create new tables. The
default value is needed
.
The following values are supported:
needed
- Create the table if it does not exist.never
- The table must already exist. A 'notFound' error is raised if the table does not exist.
886 887 888 889 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 886 def create= new_create @gapi.configuration.load.update! create_disposition: Convert.create_disposition(new_create) end |
#date(name, description: nil, mode: :nullable) ⇒ Object
Adds a date field to the schema.
See Schema#date.
766 767 768 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 766 def date name, description: nil, mode: :nullable schema.date name, description: description, mode: mode end |
#datetime(name, description: nil, mode: :nullable) ⇒ Object
Adds a datetime field to the schema.
See Schema#datetime.
738 739 740 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 738 def datetime name, description: nil, mode: :nullable schema.datetime name, description: description, mode: mode end |
#delimiter=(val) ⇒ Object
Sets the separator for fields in a CSV file.
1030 1031 1032 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 1030 def delimiter= val @gapi.configuration.load.update! field_delimiter: val end |
#encoding=(val) ⇒ Object
Sets the character encoding of the data.
1016 1017 1018 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 1016 def encoding= val @gapi.configuration.load.update! encoding: val end |
#encryption=(val) ⇒ Object
Sets the encryption configuration of the destination table.
1169 1170 1171 1172 1173 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 1169 def encryption= val @gapi.configuration.load.update!( destination_encryption_configuration: val.to_gapi ) end |
#float(name, description: nil, mode: :nullable) ⇒ Object
Adds a floating-point number field to the schema.
See Schema#float.
598 599 600 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 598 def float name, description: nil, mode: :nullable schema.float name, description: description, mode: mode end |
#format=(new_format) ⇒ Object
Sets the source file format. The default value is csv
.
The following values are supported:
csv
- CSVjson
- Newline-delimited JSONavro
- Avroparquet
- Parquetdatastore_backup
- Cloud Datastore backup
865 866 867 868 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 865 def format= new_format @gapi.configuration.load.update! source_format: Convert.source_format(new_format) end |
#ignore_unknown=(val) ⇒ Object
Allows unknown columns to be ignored.
1052 1053 1054 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 1052 def ignore_unknown= val @gapi.configuration.load.update! ignore_unknown_values: val end |
#integer(name, description: nil, mode: :nullable) ⇒ Object
Adds an integer field to the schema.
See Schema#integer.
570 571 572 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 570 def integer name, description: nil, mode: :nullable schema.integer name, description: description, mode: mode end |
#jagged_rows=(val) ⇒ Object
Sets flag for allowing jagged rows.
Accept rows that are missing trailing optional columns. The missing
values are treated as nulls. If false
, records with missing
trailing columns are treated as bad records, and if there are too
many bad records, an invalid error is returned in the job result.
The default value is false
. Only applicable to CSV, ignored for
other formats.
977 978 979 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 977 def jagged_rows= val @gapi.configuration.load.update! allow_jagged_rows: val end |
#labels=(val) ⇒ Object
Sets the labels to use for the load job.
1188 1189 1190 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 1188 def labels= val @gapi.configuration.update! labels: val end |
#location=(value) ⇒ Object
Sets the geographic location where the job should run. Required except for US and EU.
841 842 843 844 845 846 847 848 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 841 def location= value @gapi.job_reference.location = value return unless value.nil? # Treat assigning value of nil the same as unsetting the value. unset = @gapi.job_reference.instance_variables.include? :@location @gapi.job_reference.remove_instance_variable :@location if unset end |
#max_bad_records=(val) ⇒ Object
Sets the maximum number of bad records that can be ignored.
1067 1068 1069 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 1067 def max_bad_records= val @gapi.configuration.load.update! max_bad_records: val end |
#null_marker=(val) ⇒ Object
Sets the string that represents a null value in a CSV file.
1085 1086 1087 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 1085 def null_marker= val @gapi.configuration.load.update! null_marker: val end |
#projection_fields=(new_fields) ⇒ Object
Sets the projection fields.
If the format
option is set to datastore_backup
, indicates
which entity properties to load from a Cloud Datastore backup.
Property names are case sensitive and must be top-level properties.
If not set, BigQuery loads all properties. If any named property
isn't found in the Cloud Datastore backup, an invalid error is
returned.
927 928 929 930 931 932 933 934 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 927 def projection_fields= new_fields if new_fields.nil? @gapi.configuration.load.update! projection_fields: nil else @gapi.configuration.load.update! projection_fields: Array(new_fields) end end |
#quote=(val) ⇒ Object
Sets the character to use to quote string values in CSVs.
1103 1104 1105 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 1103 def quote= val @gapi.configuration.load.update! quote: val end |
#quoted_newlines=(val) ⇒ Object
Allows quoted data sections to contain newline characters in CSV.
990 991 992 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 990 def quoted_newlines= val @gapi.configuration.load.update! allow_quoted_newlines: val end |
#record(name, description: nil, mode: nil) {|nested_schema| ... } ⇒ Object
Adds a record field to the schema. A block must be passed describing the nested fields of the record. For more information about nested and repeated records, see Preparing Data for BigQuery .
See Schema#record.
804 805 806 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 804 def record name, description: nil, mode: nil, &block schema.record name, description: description, mode: mode, &block end |
#schema(replace: false) {|schema| ... } ⇒ Google::Cloud::Bigquery::Schema
Returns the table's schema. This method can also be used to set, replace, or add to the schema by passing a block. See Schema for available methods.
474 475 476 477 478 479 480 481 482 483 484 485 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 474 def schema replace: false # Same as Table#schema, but not frozen # TODO: make sure to call ensure_full_data! on Dataset#update @schema ||= Schema.from_gapi @gapi.configuration.load.schema if block_given? @schema = Schema.from_gapi if replace yield @schema check_for_mutated_schema! end # Do not freeze on updater, allow modifications @schema end |
#schema=(new_schema) ⇒ Object
Sets the schema of the destination table.
514 515 516 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 514 def schema= new_schema @schema = new_schema end |
#schema_update_options=(new_options) ⇒ Object
Sets the schema update options, which allow the schema of the
destination table to be updated as a side effect of the load job if
a schema is autodetected or supplied in the job configuration.
Schema update options are supported in two cases: when write
disposition is WRITE_APPEND
; when write disposition is
WRITE_TRUNCATE
and the destination table is a partition of a
table, specified by partition decorators. For normal tables,
WRITE_TRUNCATE
will always overwrite the schema. One or more of
the following values are specified:
ALLOW_FIELD_ADDITION
: allow adding a nullable field to the schema.ALLOW_FIELD_RELAXATION
: allow relaxing a required field in the original schema to nullable.
1127 1128 1129 1130 1131 1132 1133 1134 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 1127 def if .nil? @gapi.configuration.load.update! schema_update_options: nil else @gapi.configuration.load.update! \ schema_update_options: Array() end end |
#skip_leading=(val) ⇒ Object
Sets the number of leading rows to skip in the file.
1146 1147 1148 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 1146 def skip_leading= val @gapi.configuration.load.update! skip_leading_rows: val end |
#source_uris=(new_uris) ⇒ Object
Sets the source URIs to load.
The fully-qualified URIs that point to your data in Google Cloud.
- For Google Cloud Storage URIs: Each URI can contain one '*' wildcard character and it must come after the 'bucket' name. Size limits related to load jobs apply to external data sources. For
- Google Cloud Bigtable URIs: Exactly one URI can be specified and it has be a fully specified and valid HTTPS URL for a Google Cloud Bigtable table.
- For Google Cloud Datastore backups: Exactly one URI can be specified. Also, the '*' wildcard character is not allowed.
954 955 956 957 958 959 960 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 954 def source_uris= new_uris if new_uris.nil? @gapi.configuration.load.update! source_uris: nil else @gapi.configuration.load.update! source_uris: Array(new_uris) end end |
#string(name, description: nil, mode: :nullable) ⇒ Object
Adds a string field to the schema.
See Schema#string.
542 543 544 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 542 def string name, description: nil, mode: :nullable schema.string name, description: description, mode: mode end |
#time(name, description: nil, mode: :nullable) ⇒ Object
Adds a time field to the schema.
See Schema#time.
710 711 712 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 710 def time name, description: nil, mode: :nullable schema.time name, description: description, mode: mode end |
#time_partitioning_expiration=(expiration) ⇒ Object
Sets the partition expiration for the destination table. See Partitioned Tables.
The destination table must also be partitioned. See #time_partitioning_type=.
1297 1298 1299 1300 1301 1302 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 1297 def time_partitioning_expiration= expiration @gapi.configuration.load.time_partitioning ||= \ Google::Apis::BigqueryV2::TimePartitioning.new @gapi.configuration.load.time_partitioning.update! \ expiration_ms: expiration * 1000 end |
#time_partitioning_field=(field) ⇒ Object
Sets the field on which to partition the destination table. If not
set, the destination table is partitioned by pseudo column
_PARTITIONTIME
; if set, the table is partitioned by this field.
See Partitioned
Tables.
The destination table must also be partitioned. See #time_partitioning_type=.
You can only set the partitioning field while creating a table. BigQuery does not allow you to change partitioning on an existing table.
1263 1264 1265 1266 1267 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 1263 def time_partitioning_field= field @gapi.configuration.load.time_partitioning ||= \ Google::Apis::BigqueryV2::TimePartitioning.new @gapi.configuration.load.time_partitioning.update! field: field end |
#time_partitioning_require_filter=(val) ⇒ Object
If set to true, queries over the destination table will require a partition filter that can be used for partition elimination to be specified. See Partitioned Tables.
1315 1316 1317 1318 1319 1320 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 1315 def time_partitioning_require_filter= val @gapi.configuration.load.time_partitioning ||= \ Google::Apis::BigqueryV2::TimePartitioning.new @gapi.configuration.load.time_partitioning.update! \ require_partition_filter: val end |
#time_partitioning_type=(type) ⇒ Object
Sets the partitioning for the destination table. See Partitioned Tables.
You can only set the partitioning field while creating a table. BigQuery does not allow you to change partitioning on an existing table.
1219 1220 1221 1222 1223 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 1219 def time_partitioning_type= type @gapi.configuration.load.time_partitioning ||= \ Google::Apis::BigqueryV2::TimePartitioning.new @gapi.configuration.load.time_partitioning.update! type: type end |
#timestamp(name, description: nil, mode: :nullable) ⇒ Object
Adds a timestamp field to the schema.
See Schema#timestamp.
682 683 684 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 682 def name, description: nil, mode: :nullable schema. name, description: description, mode: mode end |
#write=(new_write) ⇒ Object
Sets the write disposition.
This specifies how to handle data already present in the table. The
default value is append
.
The following values are supported:
truncate
- BigQuery overwrites the table data.append
- BigQuery appends the data to the table.empty
- An error will be returned if the table already contains data.
908 909 910 911 |
# File 'lib/google/cloud/bigquery/load_job.rb', line 908 def write= new_write @gapi.configuration.load.update! write_disposition: Convert.write_disposition(new_write) end |