google-cloud-bigquery 1.44.1 → 1.45.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cbb9424743a823ba614589a7945d6cdef23b0c788d1240dc5d1be59b9c216751
4
- data.tar.gz: b0a00cc425a642ad511938898edbe81dd29b613b504ae03e1600de416d057b8e
3
+ metadata.gz: '03038d9349c8061b4259b0d954f722cbe1cbe52da5126b1684729bd23ab771ac'
4
+ data.tar.gz: d56ca5d84af79507553d866be87cf0b38ac14341c00b94fddf71ce6a5275171e
5
5
  SHA512:
6
- metadata.gz: d195d85dd1e139d6ecd2e79df8805ef9c1d3f268ff60aab6e9fe1a7a452e597e9b689f65625b015095772f4c4999576310360868fa0bf50c1e39f5c53b539ab2
7
- data.tar.gz: 0e94844e318d214f25883c76572028f762f298357cbb021e1418276340491360209071fec9ce578e048f3d95fb88d1ab48f5c0d46aa0c5851bd63745550f170a
6
+ metadata.gz: aacd27d7aa0e1301009bacee0569ed5f20280c4f0f7e025acfa0a99251874ee1220079ac2b94478ebb0664262c7ce5720e3df59c0cde71e52adc70ab1e05c766
7
+ data.tar.gz: 7bb66689b79db32fdc6e1183f365107f99b95272dbca2329acbbb5520e1516da3310ce317a364d19a18cff29d304943d1350f61cc107ee9d6256e8d02855f64e
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Release History
2
2
 
3
+ ### 1.45.0 (2023-09-25)
4
+
5
+ #### Features
6
+
7
+ * support load job with session ([#23320](https://github.com/googleapis/google-cloud-ruby/issues/23320))
8
+
9
+ ### 1.44.2 (2023-09-12)
10
+
11
+ #### Bug Fixes
12
+
13
+ * Avoid dataset reload when accessing location ([#22905](https://github.com/googleapis/google-cloud-ruby/issues/22905))
14
+
3
15
  ### 1.44.1 (2023-09-08)
4
16
 
5
17
  #### Bug Fixes
@@ -269,7 +269,6 @@ module Google
269
269
  #
270
270
  def location
271
271
  return nil if reference?
272
- ensure_full_data!
273
272
  @gapi.location
274
273
  end
275
274
 
@@ -2031,15 +2030,20 @@ module Google
2031
2030
  # * The key portion of a label must be unique. However, you can use the
2032
2031
  # same key with multiple resources.
2033
2032
  # * Keys must start with a lowercase letter or international character.
2033
+ # @param [Boolean] dryrun If set, don't actually run this job. Behavior
2034
+ # is undefined however for non-query jobs and may result in an error.
2035
+ # Deprecated.
2036
+ # @param [Boolean] create_session If set to true a new session will be created
2037
+ # and the load job will happen in the table created within that session.
2038
+ # Note: This will work only for _SESSION dataset.
2039
+ # @param [string] session_id Session ID in which the load job must run.
2040
+ #
2034
2041
  # @yield [updater] A block for setting the schema and other
2035
2042
  # options for the destination table. The schema can be omitted if the
2036
2043
  # destination table already exists, or if you're loading data from a
2037
2044
  # Google Cloud Datastore backup.
2038
2045
  # @yieldparam [Google::Cloud::Bigquery::LoadJob::Updater] updater An
2039
2046
  # updater to modify the load job and its schema.
2040
- # @param [Boolean] dryrun If set, don't actually run this job. Behavior
2041
- # is undefined however for non-query jobs and may result in an error.
2042
- # Deprecated.
2043
2047
  #
2044
2048
  # @return [Google::Cloud::Bigquery::LoadJob] A new load job object.
2045
2049
  #
@@ -2127,7 +2131,7 @@ module Google
2127
2131
  def load_job table_id, files, format: nil, create: nil, write: nil, projection_fields: nil, jagged_rows: nil,
2128
2132
  quoted_newlines: nil, encoding: nil, delimiter: nil, ignore_unknown: nil, max_bad_records: nil,
2129
2133
  quote: nil, skip_leading: nil, schema: nil, job_id: nil, prefix: nil, labels: nil, autodetect: nil,
2130
- null_marker: nil, dryrun: nil
2134
+ null_marker: nil, dryrun: nil, create_session: nil, session_id: nil
2131
2135
  ensure_service!
2132
2136
 
2133
2137
  updater = load_job_updater table_id,
@@ -2136,7 +2140,8 @@ module Google
2136
2140
  delimiter: delimiter, ignore_unknown: ignore_unknown,
2137
2141
  max_bad_records: max_bad_records, quote: quote, skip_leading: skip_leading,
2138
2142
  dryrun: dryrun, schema: schema, job_id: job_id, prefix: prefix, labels: labels,
2139
- autodetect: autodetect, null_marker: null_marker
2143
+ autodetect: autodetect, null_marker: null_marker, create_session: create_session,
2144
+ session_id: session_id
2140
2145
 
2141
2146
  yield updater if block_given?
2142
2147
 
@@ -2262,6 +2267,8 @@ module Google
2262
2267
  # See {Project#schema} for the creation of the schema for use with
2263
2268
  # this option. Also note that for most use cases, the block yielded by
2264
2269
  # this method is a more convenient way to configure the schema.
2270
+ # @param [string] session_id Session ID in which the load job must run.
2271
+ #
2265
2272
  #
2266
2273
  # @yield [updater] A block for setting the schema of the destination
2267
2274
  # table and other options for the load job. The schema can be omitted
@@ -2354,13 +2361,13 @@ module Google
2354
2361
  #
2355
2362
  def load table_id, files, format: nil, create: nil, write: nil, projection_fields: nil, jagged_rows: nil,
2356
2363
  quoted_newlines: nil, encoding: nil, delimiter: nil, ignore_unknown: nil, max_bad_records: nil,
2357
- quote: nil, skip_leading: nil, schema: nil, autodetect: nil, null_marker: nil, &block
2364
+ quote: nil, skip_leading: nil, schema: nil, autodetect: nil, null_marker: nil, session_id: nil, &block
2358
2365
  job = load_job table_id, files,
2359
2366
  format: format, create: create, write: write, projection_fields: projection_fields,
2360
2367
  jagged_rows: jagged_rows, quoted_newlines: quoted_newlines, encoding: encoding,
2361
2368
  delimiter: delimiter, ignore_unknown: ignore_unknown, max_bad_records: max_bad_records,
2362
2369
  quote: quote, skip_leading: skip_leading, schema: schema, autodetect: autodetect,
2363
- null_marker: null_marker, &block
2370
+ null_marker: null_marker, session_id: session_id, &block
2364
2371
 
2365
2372
  job.wait_until_done!
2366
2373
  ensure_job_succeeded! job
@@ -2904,7 +2911,8 @@ module Google
2904
2911
  def load_job_updater table_id, format: nil, create: nil, write: nil, projection_fields: nil, jagged_rows: nil,
2905
2912
  quoted_newlines: nil, encoding: nil, delimiter: nil, ignore_unknown: nil,
2906
2913
  max_bad_records: nil, quote: nil, skip_leading: nil, dryrun: nil, schema: nil, job_id: nil,
2907
- prefix: nil, labels: nil, autodetect: nil, null_marker: nil
2914
+ prefix: nil, labels: nil, autodetect: nil, null_marker: nil, create_session: nil,
2915
+ session_id: nil
2908
2916
  new_job = load_job_gapi table_id, dryrun, job_id: job_id, prefix: prefix
2909
2917
  LoadJob::Updater.new(new_job).tap do |job|
2910
2918
  job.location = location if location # may be dataset reference
@@ -2913,6 +2921,8 @@ module Google
2913
2921
  job.schema = schema unless schema.nil?
2914
2922
  job.autodetect = autodetect unless autodetect.nil?
2915
2923
  job.labels = labels unless labels.nil?
2924
+ job.create_session = create_session unless create_session.nil?
2925
+ job.session_id = session_id unless session_id.nil?
2916
2926
  load_job_file_options! job, format: format,
2917
2927
  projection_fields: projection_fields,
2918
2928
  jagged_rows: jagged_rows,
@@ -1703,6 +1703,37 @@ module Google
1703
1703
  @gapi.configuration.load.update! write_disposition: Convert.write_disposition(new_write)
1704
1704
  end
1705
1705
 
1706
+ ##
1707
+ # Sets the create_session property. If true, creates a new session,
1708
+ # where session id will be a server generated random id. If false,
1709
+ # runs query with an existing {#session_id=}, otherwise runs query in
1710
+ # non-session mode. The default value is `false`.
1711
+ #
1712
+ # @param [Boolean] value The create_session property. The default
1713
+ # value is `false`.
1714
+ #
1715
+ # @!group Attributes
1716
+ def create_session= value
1717
+ @gapi.configuration.load.create_session = value
1718
+ end
1719
+
1720
+ ##
1721
+ # Sets the session ID for a query run in session mode. See {#create_session=}.
1722
+ #
1723
+ # @param [String] value The session ID. The default value is `nil`.
1724
+ #
1725
+ # @!group Attributes
1726
+ def session_id= value
1727
+ @gapi.configuration.load.connection_properties ||= []
1728
+ prop = @gapi.configuration.load.connection_properties.find { |cp| cp.key == "session_id" }
1729
+ if prop
1730
+ prop.value = value
1731
+ else
1732
+ prop = Google::Apis::BigqueryV2::ConnectionProperty.new key: "session_id", value: value
1733
+ @gapi.configuration.load.connection_properties << prop
1734
+ end
1735
+ end
1736
+
1706
1737
  ##
1707
1738
  # Sets the projection fields.
1708
1739
  #
@@ -942,6 +942,364 @@ module Google
942
942
  job.data max: max
943
943
  end
944
944
 
945
+ ##
946
+ # Loads data into the provided destination table using an asynchronous
947
+ # method. In this method, a {LoadJob} is immediately returned. The
948
+ # caller may poll the service by repeatedly calling {Job#reload!} and
949
+ # {Job#done?} to detect when the job is done, or simply block until the
950
+ # job is done by calling #{Job#wait_until_done!}. See also {#load}.
951
+ #
952
+ # For the source of the data, you can pass a google-cloud storage file
953
+ # path or a google-cloud-storage `File` instance. Or, you can upload a
954
+ # file directly. See [Loading Data with a POST
955
+ # Request](https://cloud.google.com/bigquery/loading-data-post-request#multipart).
956
+ #
957
+ # The geographic location for the job ("US", "EU", etc.) can be set via
958
+ # {LoadJob::Updater#location=} in a block passed to this method.
959
+ #
960
+ # @param [String] table_id The destination table to load the data into.
961
+ # @param [File, Google::Cloud::Storage::File, String, URI,
962
+ # Array<Google::Cloud::Storage::File, String, URI>] files
963
+ # A file or the URI of a Google Cloud Storage file, or an Array of
964
+ # those, containing data to load into the table.
965
+ # @param [String] format The exported file format. The default value is
966
+ # `csv`.
967
+ #
968
+ # The following values are supported:
969
+ #
970
+ # * `csv` - CSV
971
+ # * `json` - [Newline-delimited JSON](https://jsonlines.org/)
972
+ # * `avro` - [Avro](http://avro.apache.org/)
973
+ # * `orc` - [ORC](https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-orc)
974
+ # * `parquet` - [Parquet](https://parquet.apache.org/)
975
+ # * `datastore_backup` - Cloud Datastore backup
976
+ # @param [String] dataset_id The destination table to load the data into.
977
+ # For load job with create_session/session_id it defaults to "_SESSION"
978
+ # @param [String] create Specifies whether the job is allowed to create
979
+ # new tables. The default value is `needed`.
980
+ #
981
+ # The following values are supported:
982
+ #
983
+ # * `needed` - Create the table if it does not exist.
984
+ # * `never` - The table must already exist. A 'notFound' error is
985
+ # raised if the table does not exist.
986
+ # @param [String] write Specifies how to handle data already present in
987
+ # the table. The default value is `append`.
988
+ #
989
+ # The following values are supported:
990
+ #
991
+ # * `truncate` - BigQuery overwrites the table data.
992
+ # * `append` - BigQuery appends the data to the table.
993
+ # * `empty` - An error will be returned if the table already contains
994
+ # data.
995
+ # @param [Array<String>] projection_fields If the `format` option is set
996
+ # to `datastore_backup`, indicates which entity properties to load
997
+ # from a Cloud Datastore backup. Property names are case sensitive and
998
+ # must be top-level properties. If not set, BigQuery loads all
999
+ # properties. If any named property isn't found in the Cloud Datastore
1000
+ # backup, an invalid error is returned.
1001
+ # @param [Boolean] jagged_rows Accept rows that are missing trailing
1002
+ # optional columns. The missing values are treated as nulls. If
1003
+ # `false`, records with missing trailing columns are treated as bad
1004
+ # records, and if there are too many bad records, an invalid error is
1005
+ # returned in the job result. The default value is `false`. Only
1006
+ # applicable to CSV, ignored for other formats.
1007
+ # @param [Boolean] quoted_newlines Indicates if BigQuery should allow
1008
+ # quoted data sections that contain newline characters in a CSV file.
1009
+ # The default value is `false`.
1010
+ # @param [Boolean] autodetect Indicates if BigQuery should
1011
+ # automatically infer the options and schema for CSV and JSON sources.
1012
+ # The default value is `false`.
1013
+ # @param [String] encoding The character encoding of the data. The
1014
+ # supported values are `UTF-8` or `ISO-8859-1`. The default value is
1015
+ # `UTF-8`.
1016
+ # @param [String] delimiter Specifices the separator for fields in a CSV
1017
+ # file. BigQuery converts the string to `ISO-8859-1` encoding, and
1018
+ # then uses the first byte of the encoded string to split the data in
1019
+ # its raw, binary state. Default is <code>,</code>.
1020
+ # @param [Boolean] ignore_unknown Indicates if BigQuery should allow
1021
+ # extra values that are not represented in the table schema. If true,
1022
+ # the extra values are ignored. If false, records with extra columns
1023
+ # are treated as bad records, and if there are too many bad records,
1024
+ # an invalid error is returned in the job result. The default value is
1025
+ # `false`.
1026
+ #
1027
+ # The `format` property determines what BigQuery treats as an extra
1028
+ # value:
1029
+ #
1030
+ # * `CSV`: Trailing columns
1031
+ # * `JSON`: Named values that don't match any column names
1032
+ # @param [Integer] max_bad_records The maximum number of bad records
1033
+ # that BigQuery can ignore when running the job. If the number of bad
1034
+ # records exceeds this value, an invalid error is returned in the job
1035
+ # result. The default value is `0`, which requires that all records
1036
+ # are valid.
1037
+ # @param [String] null_marker Specifies a string that represents a null
1038
+ # value in a CSV file. For example, if you specify `\N`, BigQuery
1039
+ # interprets `\N` as a null value when loading a CSV file. The default
1040
+ # value is the empty string. If you set this property to a custom
1041
+ # value, BigQuery throws an error if an empty string is present for
1042
+ # all data types except for STRING and BYTE. For STRING and BYTE
1043
+ # columns, BigQuery interprets the empty string as an empty value.
1044
+ # @param [String] quote The value that is used to quote data sections in
1045
+ # a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and
1046
+ # then uses the first byte of the encoded string to split the data in
1047
+ # its raw, binary state. The default value is a double-quote
1048
+ # <code>"</code>. If your data does not contain quoted sections, set
1049
+ # the property value to an empty string. If your data contains quoted
1050
+ # newline characters, you must also set the allowQuotedNewlines
1051
+ # property to true.
1052
+ # @param [Integer] skip_leading The number of rows at the top of a CSV
1053
+ # file that BigQuery will skip when loading the data. The default
1054
+ # value is `0`. This property is useful if you have header rows in the
1055
+ # file that should be skipped.
1056
+ # @param [Google::Cloud::Bigquery::Schema] schema The schema for the
1057
+ # destination table. Optional. The schema can be omitted if the
1058
+ # destination table already exists, or if you're loading data from a
1059
+ # Google Cloud Datastore backup.
1060
+ #
1061
+ # See {Project#schema} for the creation of the schema for use with
1062
+ # this option. Also note that for most use cases, the block yielded by
1063
+ # this method is a more convenient way to configure the schema.
1064
+ # @param [String] job_id A user-defined ID for the load job. The ID
1065
+ # must contain only letters (`[A-Za-z]`), numbers (`[0-9]`), underscores
1066
+ # (`_`), or dashes (`-`). The maximum length is 1,024 characters. If
1067
+ # `job_id` is provided, then `prefix` will not be used.
1068
+ #
1069
+ # See [Generating a job
1070
+ # ID](https://cloud.google.com/bigquery/docs/managing-jobs#generate-jobid).
1071
+ # @param [String] prefix A string, usually human-readable, that will be
1072
+ # prepended to a generated value to produce a unique job ID. For
1073
+ # example, the prefix `daily_import_job_` can be given to generate a
1074
+ # job ID such as `daily_import_job_12vEDtMQ0mbp1Mo5Z7mzAFQJZazh`. The
1075
+ # prefix must contain only letters (`[A-Za-z]`), numbers (`[0-9]`),
1076
+ # underscores (`_`), or dashes (`-`). The maximum length of the entire ID
1077
+ # is 1,024 characters. If `job_id` is provided, then `prefix` will not
1078
+ # be used.
1079
+ # @param [Hash] labels A hash of user-provided labels associated with
1080
+ # the job. You can use these to organize and group your jobs.
1081
+ #
1082
+ # The labels applied to a resource must meet the following requirements:
1083
+ #
1084
+ # * Each resource can have multiple labels, up to a maximum of 64.
1085
+ # * Each label must be a key-value pair.
1086
+ # * Keys have a minimum length of 1 character and a maximum length of
1087
+ # 63 characters, and cannot be empty. Values can be empty, and have
1088
+ # a maximum length of 63 characters.
1089
+ # * Keys and values can contain only lowercase letters, numeric characters,
1090
+ # underscores, and dashes. All characters must use UTF-8 encoding, and
1091
+ # international characters are allowed.
1092
+ # * The key portion of a label must be unique. However, you can use the
1093
+ # same key with multiple resources.
1094
+ # * Keys must start with a lowercase letter or international character.
1095
+ # @param [Boolean] create_session If set to true a new session will be created
1096
+ # and the load job will happen in the table created within that session.
1097
+ # Note: This will work only for tables in _SESSION dataset
1098
+ # else the property will be ignored by the backend.
1099
+ # @param [string] session_id Session ID in which the load job must run.
1100
+ #
1101
+ # @yield [updater] A block for setting the schema and other
1102
+ # options for the destination table. The schema can be omitted if the
1103
+ # destination table already exists, or if you're loading data from a
1104
+ # Google Cloud Datastore backup.
1105
+ # @yieldparam [Google::Cloud::Bigquery::LoadJob::Updater] updater An
1106
+ # updater to modify the load job and its schema.
1107
+ # @param [Boolean] dryrun If set, don't actually run this job. Behavior
1108
+ # is undefined however for non-query jobs and may result in an error.
1109
+ # Deprecated.
1110
+ #
1111
+ # @return [Google::Cloud::Bigquery::LoadJob] A new load job object.
1112
+ #
1113
+ # @example
1114
+ # require "google/cloud/bigquery"
1115
+ #
1116
+ # bigquery = Google::Cloud::Bigquery.new
1117
+ #
1118
+ # gs_url = "gs://my-bucket/file-name.csv"
1119
+ # load_job = bigquery.load_job "temp_table", gs_url, autodetect: true, create_session: true
1120
+ # load_job.wait_until_done!
1121
+ # session_id = load_job.statistics["sessionInfo"]["sessionId"]
1122
+ #
1123
+ def load_job table_id, files, dataset_id: nil, format: nil, create: nil, write: nil,
1124
+ projection_fields: nil, jagged_rows: nil, quoted_newlines: nil, encoding: nil,
1125
+ delimiter: nil, ignore_unknown: nil, max_bad_records: nil, quote: nil,
1126
+ skip_leading: nil, schema: nil, job_id: nil, prefix: nil, labels: nil, autodetect: nil,
1127
+ null_marker: nil, dryrun: nil, create_session: nil, session_id: nil, &block
1128
+ ensure_service!
1129
+ dataset_id ||= "_SESSION" unless create_session.nil? && session_id.nil?
1130
+ session_dataset = dataset dataset_id, skip_lookup: true
1131
+ table = session_dataset.table table_id, skip_lookup: true
1132
+ table.load_job files,
1133
+ format: format, create: create, write: write, projection_fields: projection_fields,
1134
+ jagged_rows: jagged_rows, quoted_newlines: quoted_newlines, encoding: encoding,
1135
+ delimiter: delimiter, ignore_unknown: ignore_unknown,
1136
+ max_bad_records: max_bad_records, quote: quote, skip_leading: skip_leading,
1137
+ dryrun: dryrun, schema: schema, job_id: job_id, prefix: prefix, labels: labels,
1138
+ autodetect: autodetect, null_marker: null_marker, create_session: create_session,
1139
+ session_id: session_id, &block
1140
+ end
1141
+
1142
+ ##
1143
+ # Loads data into the provided destination table using a synchronous
1144
+ # method that blocks for a response. Timeouts and transient errors are
1145
+ # generally handled as needed to complete the job. See also
1146
+ # {#load_job}.
1147
+ #
1148
+ # For the source of the data, you can pass a google-cloud storage file
1149
+ # path or a google-cloud-storage `File` instance. Or, you can upload a
1150
+ # file directly. See [Loading Data with a POST
1151
+ # Request](https://cloud.google.com/bigquery/loading-data-post-request#multipart).
1152
+ #
1153
+ # The geographic location for the job ("US", "EU", etc.) can be set via
1154
+ # {LoadJob::Updater#location=} in a block passed to this method.
1155
+ #
1156
+ # @param [String] table_id The destination table to load the data into.
1157
+ # @param [File, Google::Cloud::Storage::File, String, URI,
1158
+ # Array<Google::Cloud::Storage::File, String, URI>] files
1159
+ # A file or the URI of a Google Cloud Storage file, or an Array of
1160
+ # those, containing data to load into the table.
1161
+ # @param [String] format The exported file format. The default value is
1162
+ # `csv`.
1163
+ #
1164
+ # The following values are supported:
1165
+ #
1166
+ # * `csv` - CSV
1167
+ # * `json` - [Newline-delimited JSON](https://jsonlines.org/)
1168
+ # * `avro` - [Avro](http://avro.apache.org/)
1169
+ # * `orc` - [ORC](https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-orc)
1170
+ # * `parquet` - [Parquet](https://parquet.apache.org/)
1171
+ # * `datastore_backup` - Cloud Datastore backup
1172
+ # @param [String] create Specifies whether the job is allowed to create
1173
+ # new tables. The default value is `needed`.
1174
+ #
1175
+ # The following values are supported:
1176
+ #
1177
+ # * `needed` - Create the table if it does not exist.
1178
+ # * `never` - The table must already exist. A 'notFound' error is
1179
+ # raised if the table does not exist.
1180
+ # @param [String] dataset_id The destination table to load the data into.
1181
+ # For load job with session it defaults to "_SESSION"
1182
+ # @param [String] write Specifies how to handle data already present in
1183
+ # the table. The default value is `append`.
1184
+ #
1185
+ # The following values are supported:
1186
+ #
1187
+ # * `truncate` - BigQuery overwrites the table data.
1188
+ # * `append` - BigQuery appends the data to the table.
1189
+ # * `empty` - An error will be returned if the table already contains
1190
+ # data.
1191
+ # @param [Array<String>] projection_fields If the `format` option is set
1192
+ # to `datastore_backup`, indicates which entity properties to load
1193
+ # from a Cloud Datastore backup. Property names are case sensitive and
1194
+ # must be top-level properties. If not set, BigQuery loads all
1195
+ # properties. If any named property isn't found in the Cloud Datastore
1196
+ # backup, an invalid error is returned.
1197
+ # @param [Boolean] jagged_rows Accept rows that are missing trailing
1198
+ # optional columns. The missing values are treated as nulls. If
1199
+ # `false`, records with missing trailing columns are treated as bad
1200
+ # records, and if there are too many bad records, an invalid error is
1201
+ # returned in the job result. The default value is `false`. Only
1202
+ # applicable to CSV, ignored for other formats.
1203
+ # @param [Boolean] quoted_newlines Indicates if BigQuery should allow
1204
+ # quoted data sections that contain newline characters in a CSV file.
1205
+ # The default value is `false`.
1206
+ # @param [Boolean] autodetect Indicates if BigQuery should
1207
+ # automatically infer the options and schema for CSV and JSON sources.
1208
+ # The default value is `false`.
1209
+ # @param [String] encoding The character encoding of the data. The
1210
+ # supported values are `UTF-8` or `ISO-8859-1`. The default value is
1211
+ # `UTF-8`.
1212
+ # @param [String] delimiter Specifices the separator for fields in a CSV
1213
+ # file. BigQuery converts the string to `ISO-8859-1` encoding, and
1214
+ # then uses the first byte of the encoded string to split the data in
1215
+ # its raw, binary state. Default is <code>,</code>.
1216
+ # @param [Boolean] ignore_unknown Indicates if BigQuery should allow
1217
+ # extra values that are not represented in the table schema. If true,
1218
+ # the extra values are ignored. If false, records with extra columns
1219
+ # are treated as bad records, and if there are too many bad records,
1220
+ # an invalid error is returned in the job result. The default value is
1221
+ # `false`.
1222
+ #
1223
+ # The `format` property determines what BigQuery treats as an extra
1224
+ # value:
1225
+ #
1226
+ # * `CSV`: Trailing columns
1227
+ # * `JSON`: Named values that don't match any column names
1228
+ # @param [Integer] max_bad_records The maximum number of bad records
1229
+ # that BigQuery can ignore when running the job. If the number of bad
1230
+ # records exceeds this value, an invalid error is returned in the job
1231
+ # result. The default value is `0`, which requires that all records
1232
+ # are valid.
1233
+ # @param [String] null_marker Specifies a string that represents a null
1234
+ # value in a CSV file. For example, if you specify `\N`, BigQuery
1235
+ # interprets `\N` as a null value when loading a CSV file. The default
1236
+ # value is the empty string. If you set this property to a custom
1237
+ # value, BigQuery throws an error if an empty string is present for
1238
+ # all data types except for STRING and BYTE. For STRING and BYTE
1239
+ # columns, BigQuery interprets the empty string as an empty value.
1240
+ # @param [String] quote The value that is used to quote data sections in
1241
+ # a CSV file. BigQuery converts the string to ISO-8859-1 encoding, and
1242
+ # then uses the first byte of the encoded string to split the data in
1243
+ # its raw, binary state. The default value is a double-quote
1244
+ # <code>"</code>. If your data does not contain quoted sections, set
1245
+ # the property value to an empty string. If your data contains quoted
1246
+ # newline characters, you must also set the allowQuotedNewlines
1247
+ # property to true.
1248
+ # @param [Integer] skip_leading The number of rows at the top of a CSV
1249
+ # file that BigQuery will skip when loading the data. The default
1250
+ # value is `0`. This property is useful if you have header rows in the
1251
+ # file that should be skipped.
1252
+ # @param [Google::Cloud::Bigquery::Schema] schema The schema for the
1253
+ # destination table. Optional. The schema can be omitted if the
1254
+ # destination table already exists, or if you're loading data from a
1255
+ # Google Cloud Datastore backup.
1256
+ #
1257
+ # See {Project#schema} for the creation of the schema for use with
1258
+ # this option. Also note that for most use cases, the block yielded by
1259
+ # this method is a more convenient way to configure the schema.
1260
+ # @param [string] session_id Session ID in which the load job must run.
1261
+ #
1262
+ # @yield [updater] A block for setting the schema of the destination
1263
+ # table and other options for the load job. The schema can be omitted
1264
+ # if the destination table already exists, or if you're loading data
1265
+ # from a Google Cloud Datastore backup.
1266
+ # @yieldparam [Google::Cloud::Bigquery::LoadJob::Updater] updater An
1267
+ # updater to modify the load job and its schema.
1268
+ #
1269
+ # @return [Boolean] Returns `true` if the load job was successful.
1270
+ #
1271
+ # @example
1272
+ # require "google/cloud/bigquery"
1273
+ #
1274
+ # bigquery = Google::Cloud::Bigquery.new
1275
+ #
1276
+ # gs_url = "gs://my-bucket/file-name.csv"
1277
+ # bigquery.load "my_new_table", gs_url, dataset_id: "my_dataset" do |schema|
1278
+ # schema.string "first_name", mode: :required
1279
+ # schema.record "cities_lived", mode: :repeated do |nested_schema|
1280
+ # nested_schema.string "place", mode: :required
1281
+ # nested_schema.integer "number_of_years", mode: :required
1282
+ # end
1283
+ # end
1284
+ #
1285
+ # @!group Data
1286
+ #
1287
+ def load table_id, files, dataset_id: "_SESSION", format: nil, create: nil, write: nil,
1288
+ projection_fields: nil, jagged_rows: nil, quoted_newlines: nil, encoding: nil,
1289
+ delimiter: nil, ignore_unknown: nil, max_bad_records: nil, quote: nil,
1290
+ skip_leading: nil, schema: nil, autodetect: nil, null_marker: nil, session_id: nil, &block
1291
+ job = load_job table_id, files, dataset_id: dataset_id,
1292
+ format: format, create: create, write: write, projection_fields: projection_fields,
1293
+ jagged_rows: jagged_rows, quoted_newlines: quoted_newlines, encoding: encoding,
1294
+ delimiter: delimiter, ignore_unknown: ignore_unknown, max_bad_records: max_bad_records,
1295
+ quote: quote, skip_leading: skip_leading, schema: schema, autodetect: autodetect,
1296
+ null_marker: null_marker, session_id: session_id, &block
1297
+
1298
+ job.wait_until_done!
1299
+ ensure_job_succeeded! job
1300
+ true
1301
+ end
1302
+
945
1303
  ##
946
1304
  # Creates a new External::DataSource (or subclass) object that
947
1305
  # represents the external data source that can be queried from directly,
@@ -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, &block
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
@@ -3114,7 +3123,8 @@ module Google
3114
3123
  def load_job_updater format: nil, create: nil, write: nil, projection_fields: nil, jagged_rows: nil,
3115
3124
  quoted_newlines: nil, encoding: nil, delimiter: nil, ignore_unknown: nil,
3116
3125
  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
3126
+ prefix: nil, labels: nil, autodetect: nil, null_marker: nil,
3127
+ create_session: nil, session_id: nil
3118
3128
  new_job = load_job_gapi table_id, dryrun, job_id: job_id, prefix: prefix
3119
3129
  LoadJob::Updater.new(new_job).tap do |job|
3120
3130
  job.location = location if location # may be table reference
@@ -3123,6 +3133,8 @@ module Google
3123
3133
  job.schema = schema unless schema.nil?
3124
3134
  job.autodetect = autodetect unless autodetect.nil?
3125
3135
  job.labels = labels unless labels.nil?
3136
+ job.create_session = create_session unless create_session.nil?
3137
+ job.session_id = session_id unless session_id.nil?
3126
3138
  load_job_file_options! job, format: format,
3127
3139
  projection_fields: projection_fields,
3128
3140
  jagged_rows: jagged_rows,
@@ -16,7 +16,7 @@
16
16
  module Google
17
17
  module Cloud
18
18
  module Bigquery
19
- VERSION = "1.44.1".freeze
19
+ VERSION = "1.45.0".freeze
20
20
  end
21
21
  end
22
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: google-cloud-bigquery
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.44.1
4
+ version: 1.45.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Moore
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-09-08 00:00:00.000000000 Z
12
+ date: 2023-09-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: concurrent-ruby