google-cloud-bigquery 1.34.0 → 1.37.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: e1868b74a16bb2b5b53c861f461c684bb5926e71c9c273a4d8f3bad9a02502a2
4
- data.tar.gz: 582047d7174dc4063b0f9aaee2057136b4aff4eda687c05c2e9a931ba9dfc5b8
3
+ metadata.gz: d23511050f9602220787610566c2f1f62ed37ad3c014e9708e16a05bf4a079a1
4
+ data.tar.gz: 5a61cffca84ffd8a1561f28d6d2d545d7451389f4a363279bea40f907c1ec568
5
5
  SHA512:
6
- metadata.gz: f4aaf252e3277bb47e9b1c27a083da4d74a3f37064506b7d288cc1f9dc720906d0403712917d1d8ada4fb5cef08e43a5f7db297848f428a007f197513fd4c72e
7
- data.tar.gz: 42c4c862b05fbf0563bdb0721685dab1651243ceb5a803cbf6000b42203be58a5ac4504d4b7d0da9864825c041c379cd344c0efdd309bfb4aa5c7914de92fafd
6
+ metadata.gz: 4bbdca09750d11aabed55d8868b9b70501def5a8a12b35f4e0b92744c7d2a53e9ba503384771ccad85eb32ddc133b840d30a8434efc82260f4ff2fab2fbec6ac
7
+ data.tar.gz: 8990512c43041ad7b3b2e4d87c64d22b080a6a0bbc8d648fe09942504b2bc607a910809688b4f13410fb5c8fe2222f4b12ea8a613a9ac52864835319a1b56c66
data/CHANGELOG.md CHANGED
@@ -1,5 +1,41 @@
1
1
  # Release History
2
2
 
3
+ ### 1.37.0 / 2021-10-21
4
+
5
+ #### Features
6
+
7
+ * Add support for Avro options to external data sources
8
+ * Add External::AvroSource
9
+
10
+ ### 1.36.0 / 2021-09-22
11
+
12
+ #### Features
13
+
14
+ * Add Job#delete
15
+
16
+ #### Bug Fixes
17
+
18
+ * Add precision and scale to Field#add_field
19
+
20
+ ### 1.35.1 / 2021-09-14
21
+
22
+ #### Documentation
23
+
24
+ * Wrap character class regex in backticks
25
+
26
+ ### 1.35.0 / 2021-08-12
27
+
28
+ #### Features
29
+
30
+ * Add GEOGRAPHY schema helpers
31
+ * Add LoadJob#geography
32
+ * Add Schema::Field#geography
33
+ * Add Table::Updater#geography
34
+ * Add support for GEOGRAPHY type
35
+ * Add Schema#geography
36
+ * Add support for multistatement transaction statistics in jobs
37
+ * Add Job#transaction_id
38
+
3
39
  ### 1.34.0 / 2021-07-20
4
40
 
5
41
  #### Features
@@ -38,6 +38,7 @@ module Google
38
38
  # | `STRING` | `String` | |
39
39
  # | `DATETIME` | `DateTime` | `DATETIME` does not support time zone. |
40
40
  # | `DATE` | `Date` | |
41
+ # | `GEOGRAPHY` | `String` | |
41
42
  # | `TIMESTAMP` | `Time` | |
42
43
  # | `TIME` | `Google::Cloud::BigQuery::Time` | |
43
44
  # | `BYTES` | `File`, `IO`, `StringIO`, or similar | |
@@ -102,6 +103,8 @@ module Google
102
103
  ::Time.parse("#{value[:v]} UTC").to_datetime
103
104
  elsif field.type == "DATE"
104
105
  Date.parse value[:v]
106
+ elsif field.type == "GEOGRAPHY"
107
+ String value[:v]
105
108
  else
106
109
  value[:v]
107
110
  end
@@ -69,8 +69,8 @@ module Google
69
69
  ##
70
70
  # A unique ID for this dataset, without the project name.
71
71
  #
72
- # @return [String] The ID must contain only letters (a-z, A-Z), numbers
73
- # (0-9), or underscores (_). The maximum length is 1,024 characters.
72
+ # @return [String] The ID must contain only letters (`[A-Za-z]`), numbers
73
+ # (`[0-9]`), or underscores (`_`). The maximum length is 1,024 characters.
74
74
  #
75
75
  # @!group Attributes
76
76
  #
@@ -501,7 +501,7 @@ module Google
501
501
  # you can pass the table's schema as a hash (see example.)
502
502
  #
503
503
  # @param [String] table_id The ID of the table. The ID must contain only
504
- # letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum
504
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`). The maximum
505
505
  # length is 1,024 characters.
506
506
  # @param [String] name A descriptive name for the table.
507
507
  # @param [String] description A user-friendly description of the table.
@@ -630,7 +630,7 @@ module Google
630
630
  # @see https://cloud.google.com/bigquery/docs/views Creating views
631
631
  #
632
632
  # @param [String] table_id The ID of the view table. The ID must contain
633
- # only letters (a-z, A-Z), numbers (0-9), or underscores (_). The
633
+ # only letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`). The
634
634
  # maximum length is 1,024 characters.
635
635
  # @param [String] query The query that BigQuery executes when the view
636
636
  # is referenced.
@@ -726,8 +726,8 @@ module Google
726
726
  #
727
727
  # @see https://cloud.google.com/bigquery/docs/materialized-views-intro Introduction to materialized views
728
728
  #
729
- # @param [String] table_id The ID of the materialized view table. The ID must contain only letters (a-z, A-Z),
730
- # numbers (0-9), or underscores (_). The maximum length is 1,024 characters.
729
+ # @param [String] table_id The ID of the materialized view table. The ID must contain only letters (`[A-Za-z]`),
730
+ # numbers (`[0-9]`), or underscores (`_`). The maximum length is 1,024 characters.
731
731
  # @param [String] query The query that BigQuery executes when the materialized view is referenced.
732
732
  # @param [String] name A descriptive name for the table.
733
733
  # @param [String] description A user-friendly description of the table.
@@ -954,7 +954,7 @@ module Google
954
954
  # {Routine::Updater#description=}.
955
955
  #
956
956
  # @param [String] routine_id The ID of the routine. The ID must contain only
957
- # letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length
957
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`). The maximum length
958
958
  # is 256 characters.
959
959
  # @yield [routine] A block for setting properties on the routine.
960
960
  # @yieldparam [Google::Cloud::Bigquery::Routine::Updater] routine An updater to set additional properties on the
@@ -1138,7 +1138,7 @@ module Google
1138
1138
  # use named query parameters. When set, `legacy_sql` will automatically be set to false and `standard_sql` to
1139
1139
  # true.
1140
1140
  #
1141
- # Ruby types are mapped to BigQuery types as follows:
1141
+ # BigQuery types are converted from Ruby types as follows:
1142
1142
  #
1143
1143
  # | BigQuery | Ruby | Notes |
1144
1144
  # |--------------|--------------------------------------|----------------------------------------------------|
@@ -1146,10 +1146,11 @@ module Google
1146
1146
  # | `INT64` | `Integer` | |
1147
1147
  # | `FLOAT64` | `Float` | |
1148
1148
  # | `NUMERIC` | `BigDecimal` | `BigDecimal` values will be rounded to scale 9. |
1149
- # | `BIGNUMERIC` | | Query param values must be mapped in `types`. |
1149
+ # | `BIGNUMERIC` | `BigDecimal` | NOT AUTOMATIC: Must be mapped using `types`, below.|
1150
1150
  # | `STRING` | `String` | |
1151
1151
  # | `DATETIME` | `DateTime` | `DATETIME` does not support time zone. |
1152
1152
  # | `DATE` | `Date` | |
1153
+ # | `GEOGRAPHY` | `String` (WKT or GeoJSON) | NOT AUTOMATIC: Must be mapped using `types`, below.|
1153
1154
  # | `TIMESTAMP` | `Time` | |
1154
1155
  # | `TIME` | `Google::Cloud::BigQuery::Time` | |
1155
1156
  # | `BYTES` | `File`, `IO`, `StringIO`, or similar | |
@@ -1157,7 +1158,8 @@ module Google
1157
1158
  # | `STRUCT` | `Hash` | Hash keys may be strings or symbols. |
1158
1159
  #
1159
1160
  # See [Data Types](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types) for an overview
1160
- # of each BigQuery data type, including allowed values.
1161
+ # of each BigQuery data type, including allowed values. For the `GEOGRAPHY` type, see [Working with BigQuery
1162
+ # GIS data](https://cloud.google.com/bigquery/docs/gis-data).
1161
1163
  # @param [Array, Hash] types Standard SQL only. Types of the SQL parameters in `params`. It is not always
1162
1164
  # possible to infer the right SQL type from a value in `params`. In these cases, `types` must be used to
1163
1165
  # specify the SQL type for these values.
@@ -1174,6 +1176,7 @@ module Google
1174
1176
  # * `:STRING`
1175
1177
  # * `:DATETIME`
1176
1178
  # * `:DATE`
1179
+ # * `:GEOGRAPHY`
1177
1180
  # * `:TIMESTAMP`
1178
1181
  # * `:TIME`
1179
1182
  # * `:BYTES`
@@ -1246,8 +1249,8 @@ module Google
1246
1249
  # (without incurring a charge). Optional. If unspecified, this will be
1247
1250
  # set to your project default.
1248
1251
  # @param [String] job_id A user-defined ID for the query job. The ID
1249
- # must contain only letters (a-z, A-Z), numbers (0-9), underscores
1250
- # (_), or dashes (-). The maximum length is 1,024 characters. If
1252
+ # must contain only letters (`[A-Za-z]`), numbers (`[0-9]`), underscores
1253
+ # (`_`), or dashes (`-`). The maximum length is 1,024 characters. If
1251
1254
  # `job_id` is provided, then `prefix` will not be used.
1252
1255
  #
1253
1256
  # See [Generating a job
@@ -1256,8 +1259,8 @@ module Google
1256
1259
  # prepended to a generated value to produce a unique job ID. For
1257
1260
  # example, the prefix `daily_import_job_` can be given to generate a
1258
1261
  # job ID such as `daily_import_job_12vEDtMQ0mbp1Mo5Z7mzAFQJZazh`. The
1259
- # prefix must contain only letters (a-z, A-Z), numbers (0-9),
1260
- # underscores (_), or dashes (-). The maximum length of the entire ID
1262
+ # prefix must contain only letters (`[A-Za-z]`), numbers (`[0-9]`),
1263
+ # underscores (`_`), or dashes (`-`). The maximum length of the entire ID
1261
1264
  # is 1,024 characters. If `job_id` is provided, then `prefix` will not
1262
1265
  # be used.
1263
1266
  # @param [Hash] labels A hash of user-provided labels associated with
@@ -1481,7 +1484,7 @@ module Google
1481
1484
  # use named query parameters. When set, `legacy_sql` will automatically be set to false and `standard_sql` to
1482
1485
  # true.
1483
1486
  #
1484
- # Ruby types are mapped to BigQuery types as follows:
1487
+ # BigQuery types are converted from Ruby types as follows:
1485
1488
  #
1486
1489
  # | BigQuery | Ruby | Notes |
1487
1490
  # |--------------|--------------------------------------|----------------------------------------------------|
@@ -1489,10 +1492,11 @@ module Google
1489
1492
  # | `INT64` | `Integer` | |
1490
1493
  # | `FLOAT64` | `Float` | |
1491
1494
  # | `NUMERIC` | `BigDecimal` | `BigDecimal` values will be rounded to scale 9. |
1492
- # | `BIGNUMERIC` | | Query param values must be mapped in `types`. |
1495
+ # | `BIGNUMERIC` | `BigDecimal` | NOT AUTOMATIC: Must be mapped using `types`, below.|
1493
1496
  # | `STRING` | `String` | |
1494
1497
  # | `DATETIME` | `DateTime` | `DATETIME` does not support time zone. |
1495
1498
  # | `DATE` | `Date` | |
1499
+ # | `GEOGRAPHY` | `String` (WKT or GeoJSON) | NOT AUTOMATIC: Must be mapped using `types`, below.|
1496
1500
  # | `TIMESTAMP` | `Time` | |
1497
1501
  # | `TIME` | `Google::Cloud::BigQuery::Time` | |
1498
1502
  # | `BYTES` | `File`, `IO`, `StringIO`, or similar | |
@@ -1500,7 +1504,8 @@ module Google
1500
1504
  # | `STRUCT` | `Hash` | Hash keys may be strings or symbols. |
1501
1505
  #
1502
1506
  # See [Data Types](https://cloud.google.com/bigquery/docs/reference/standard-sql/data-types) for an overview
1503
- # of each BigQuery data type, including allowed values.
1507
+ # of each BigQuery data type, including allowed values. For the `GEOGRAPHY` type, see [Working with BigQuery
1508
+ # GIS data](https://cloud.google.com/bigquery/docs/gis-data).
1504
1509
  # @param [Array, Hash] types Standard SQL only. Types of the SQL parameters in `params`. It is not always
1505
1510
  # possible to infer the right SQL type from a value in `params`. In these cases, `types` must be used to
1506
1511
  # specify the SQL type for these values.
@@ -1517,6 +1522,7 @@ module Google
1517
1522
  # * `:STRING`
1518
1523
  # * `:DATETIME`
1519
1524
  # * `:DATE`
1525
+ # * `:GEOGRAPHY`
1520
1526
  # * `:TIMESTAMP`
1521
1527
  # * `:TIME`
1522
1528
  # * `:BYTES`
@@ -1877,8 +1883,8 @@ module Google
1877
1883
  # this option. Also note that for most use cases, the block yielded by
1878
1884
  # this method is a more convenient way to configure the schema.
1879
1885
  # @param [String] job_id A user-defined ID for the load job. The ID
1880
- # must contain only letters (a-z, A-Z), numbers (0-9), underscores
1881
- # (_), or dashes (-). The maximum length is 1,024 characters. If
1886
+ # must contain only letters (`[A-Za-z]`), numbers (`[0-9]`), underscores
1887
+ # (`_`), or dashes (`-`). The maximum length is 1,024 characters. If
1882
1888
  # `job_id` is provided, then `prefix` will not be used.
1883
1889
  #
1884
1890
  # See [Generating a job
@@ -1887,8 +1893,8 @@ module Google
1887
1893
  # prepended to a generated value to produce a unique job ID. For
1888
1894
  # example, the prefix `daily_import_job_` can be given to generate a
1889
1895
  # job ID such as `daily_import_job_12vEDtMQ0mbp1Mo5Z7mzAFQJZazh`. The
1890
- # prefix must contain only letters (a-z, A-Z), numbers (0-9),
1891
- # underscores (_), or dashes (-). The maximum length of the entire ID
1896
+ # prefix must contain only letters (`[A-Za-z]`), numbers (`[0-9]`),
1897
+ # underscores (`_`), or dashes (`-`). The maximum length of the entire ID
1892
1898
  # is 1,024 characters. If `job_id` is provided, then `prefix` will not
1893
1899
  # be used.
1894
1900
  # @param [Hash] labels A hash of user-provided labels associated with
@@ -2421,6 +2427,7 @@ module Google
2421
2427
  # | `BIGNUMERIC` | `String` | Pass as `String` to avoid rounding to scale 9. |
2422
2428
  # | `DATETIME` | `DateTime` | `DATETIME` does not support time zone. |
2423
2429
  # | `DATE` | `Date` | |
2430
+ # | `GEOGRAPHY` | `String` | |
2424
2431
  # | `TIMESTAMP` | `Time` | |
2425
2432
  # | `TIME` | `Google::Cloud::BigQuery::Time` | |
2426
2433
  # | `BYTES` | `File`, `IO`, `StringIO`, or similar | |
@@ -0,0 +1,107 @@
1
+ # Copyright 2021 Google LLC
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # https://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+
16
+ require "google/apis/bigquery_v2"
17
+
18
+ module Google
19
+ module Cloud
20
+ module Bigquery
21
+ module External
22
+ ##
23
+ # # AvroSource
24
+ #
25
+ # {External::AvroSource} is a subclass of {External::DataSource} and
26
+ # represents a Avro external data source that can be queried
27
+ # from directly, even though the data is not stored in BigQuery. Instead
28
+ # of loading or streaming the data, this object references the external
29
+ # data source.
30
+ #
31
+ # @example
32
+ # require "google/cloud/bigquery"
33
+ #
34
+ # bigquery = Google::Cloud::Bigquery.new
35
+ #
36
+ # avro_url = "gs://bucket/path/to/*.avro"
37
+ # avro_table = bigquery.external avro_url do |avro|
38
+ # avro.use_avro_logical_types = 1
39
+ # end
40
+ #
41
+ # data = bigquery.query "SELECT * FROM my_ext_table",
42
+ # external: { my_ext_table: avro_table }
43
+ #
44
+ # # Iterate over the first page of results
45
+ # data.each do |row|
46
+ # puts row[:name]
47
+ # end
48
+ # # Retrieve the next page of results
49
+ # data = data.next if data.next?
50
+ #
51
+ class AvroSource < External::DataSource
52
+ ##
53
+ # @private Create an empty AvroSource object.
54
+ def initialize
55
+ super
56
+ @gapi.avro_options = Google::Apis::BigqueryV2::AvroOptions.new
57
+ end
58
+
59
+ ##
60
+ # Indicates whether to interpret logical types as the corresponding BigQuery data type (for example,
61
+ # `TIMESTAMP`), instead of using the raw type (for example, `INTEGER`).
62
+ #
63
+ # @return [Boolean]
64
+ #
65
+ # @example
66
+ # require "google/cloud/bigquery"
67
+ #
68
+ # bigquery = Google::Cloud::Bigquery.new
69
+ #
70
+ # avro_url = "gs://bucket/path/to/*.avro"
71
+ # avro_table = bigquery.external avro_url do |avro|
72
+ # avro.use_avro_logical_types = true
73
+ # end
74
+ #
75
+ # avro_table.use_avro_logical_types #=> true
76
+ #
77
+ def use_avro_logical_types
78
+ @gapi.avro_options.use_avro_logical_types
79
+ end
80
+
81
+ ##
82
+ # Sets whether to interpret logical types as the corresponding BigQuery data type (for example, `TIMESTAMP`),
83
+ # instead of using the raw type (for example, `INTEGER`).
84
+ #
85
+ # @param [Boolean] new_use_avro_logical_types The new `use_avro_logical_types` value.
86
+ #
87
+ # @example
88
+ # require "google/cloud/bigquery"
89
+ #
90
+ # bigquery = Google::Cloud::Bigquery.new
91
+ #
92
+ # avro_url = "gs://bucket/path/to/*.avro"
93
+ # avro_table = bigquery.external avro_url do |avro|
94
+ # avro.use_avro_logical_types = true
95
+ # end
96
+ #
97
+ # avro_table.use_avro_logical_types #=> true
98
+ #
99
+ def use_avro_logical_types= new_use_avro_logical_types
100
+ frozen_check!
101
+ @gapi.avro_options.use_avro_logical_types = new_use_avro_logical_types
102
+ end
103
+ end
104
+ end
105
+ end
106
+ end
107
+ end
@@ -37,7 +37,7 @@ module Google
37
37
  #
38
38
  # bigquery = Google::Cloud::Bigquery.new
39
39
  #
40
- # avro_url = "gs://bucket/path/to/data.avro"
40
+ # avro_url = "gs://bucket/path/to/*.avro"
41
41
  # avro_table = bigquery.external avro_url do |avro|
42
42
  # avro.autodetect = true
43
43
  # end
@@ -174,7 +174,7 @@ module Google
174
174
  #
175
175
  # bigquery = Google::Cloud::Bigquery.new
176
176
  #
177
- # avro_url = "gs://bucket/path/to/data.avro"
177
+ # avro_url = "gs://bucket/path/to/*.avro"
178
178
  # avro_table = bigquery.external avro_url
179
179
  #
180
180
  # avro_table.format #=> "AVRO"
@@ -14,6 +14,7 @@
14
14
 
15
15
 
16
16
  require "google/cloud/bigquery/external/data_source"
17
+ require "google/cloud/bigquery/external/avro_source"
17
18
  require "google/cloud/bigquery/external/bigtable_source"
18
19
  require "google/cloud/bigquery/external/csv_source"
19
20
  require "google/cloud/bigquery/external/json_source"
@@ -101,28 +102,28 @@ module Google
101
102
  # @private Determine source_format from inputs
102
103
  def self.source_format_for urls, format
103
104
  val = {
104
- "csv" => "CSV",
105
105
  "avro" => "AVRO",
106
- "json" => "NEWLINE_DELIMITED_JSON",
107
- "newline_delimited_json" => "NEWLINE_DELIMITED_JSON",
108
- "sheets" => "GOOGLE_SHEETS",
109
- "google_sheets" => "GOOGLE_SHEETS",
110
- "datastore" => "DATASTORE_BACKUP",
106
+ "bigtable" => "BIGTABLE",
107
+ "csv" => "CSV",
111
108
  "backup" => "DATASTORE_BACKUP",
109
+ "datastore" => "DATASTORE_BACKUP",
112
110
  "datastore_backup" => "DATASTORE_BACKUP",
113
- "bigtable" => "BIGTABLE",
111
+ "sheets" => "GOOGLE_SHEETS",
112
+ "google_sheets" => "GOOGLE_SHEETS",
113
+ "json" => "NEWLINE_DELIMITED_JSON",
114
+ "newline_delimited_json" => "NEWLINE_DELIMITED_JSON",
114
115
  "orc" => "ORC",
115
116
  "parquet" => "PARQUET"
116
117
  }[format.to_s.downcase]
117
118
  return val unless val.nil?
118
119
  Array(urls).each do |url|
119
- return "CSV" if url.end_with? ".csv"
120
- return "NEWLINE_DELIMITED_JSON" if url.end_with? ".json"
121
- return "PARQUET" if url.end_with? ".parquet"
122
120
  return "AVRO" if url.end_with? ".avro"
121
+ return "BIGTABLE" if url.start_with? "https://googleapis.com/bigtable/projects/"
122
+ return "CSV" if url.end_with? ".csv"
123
123
  return "DATASTORE_BACKUP" if url.end_with? ".backup_info"
124
124
  return "GOOGLE_SHEETS" if url.start_with? "https://docs.google.com/spreadsheets/"
125
- return "BIGTABLE" if url.start_with? "https://googleapis.com/bigtable/projects/"
125
+ return "NEWLINE_DELIMITED_JSON" if url.end_with? ".json"
126
+ return "PARQUET" if url.end_with? ".parquet"
126
127
  end
127
128
  nil
128
129
  end
@@ -131,13 +132,14 @@ module Google
131
132
  # @private Determine table class from source_format
132
133
  def self.table_class_for format
133
134
  case format
135
+ when "AVRO" then External::AvroSource
136
+ when "BIGTABLE" then External::BigtableSource
134
137
  when "CSV" then External::CsvSource
138
+ when "GOOGLE_SHEETS" then External::SheetsSource
135
139
  when "NEWLINE_DELIMITED_JSON" then External::JsonSource
136
140
  when "PARQUET" then External::ParquetSource
137
- when "GOOGLE_SHEETS" then External::SheetsSource
138
- when "BIGTABLE" then External::BigtableSource
139
141
  else
140
- # AVRO, DATASTORE_BACKUP
142
+ # DATASTORE_BACKUP, ORC
141
143
  External::DataSource
142
144
  end
143
145
  end
@@ -74,8 +74,8 @@ module Google
74
74
  ##
75
75
  # The ID of the job.
76
76
  #
77
- # @return [String] The ID must contain only letters (a-z, A-Z), numbers
78
- # (0-9), underscores (_), or dashes (-). The maximum length is 1,024
77
+ # @return [String] The ID must contain only letters (`[A-Za-z]`), numbers
78
+ # (`[0-9]`), underscores (`_`), or dashes (`-`). The maximum length is 1,024
79
79
  # characters.
80
80
  #
81
81
  def job_id
@@ -226,6 +226,15 @@ module Google
226
226
  Array(@gapi.statistics.reservation_usage).map { |g| ReservationUsage.from_gapi g }
227
227
  end
228
228
 
229
+ ##
230
+ # The ID of a multi-statement transaction.
231
+ #
232
+ # @return [String, nil] The transaction ID, or `nil` if not associated with a transaction.
233
+ #
234
+ def transaction_id
235
+ @gapi.statistics.transaction_info&.transaction_id
236
+ end
237
+
229
238
  ##
230
239
  # The statistics including stack frames for a child job of a script.
231
240
  #
@@ -383,6 +392,28 @@ module Google
383
392
  true
384
393
  end
385
394
 
395
+ ##
396
+ # Requests that a job is deleted. This call will return when the job is deleted.
397
+ #
398
+ # @return [Boolean] Returns `true` if the job was deleted.
399
+ #
400
+ # @example
401
+ # require "google/cloud/bigquery"
402
+ #
403
+ # bigquery = Google::Cloud::Bigquery.new
404
+ #
405
+ # job = bigquery.job "my_job"
406
+ #
407
+ # job.delete
408
+ #
409
+ # @!group Lifecycle
410
+ #
411
+ def delete
412
+ ensure_service!
413
+ service.delete_job job_id, location: location
414
+ true
415
+ end
416
+
386
417
  ##
387
418
  # Created a new job with the current configuration.
388
419
  #
@@ -744,7 +744,7 @@ module Google
744
744
  # See {Schema#string}.
745
745
  #
746
746
  # @param [String] name The field name. The name must contain only
747
- # letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
747
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`), and must
748
748
  # start with a letter or underscore. The maximum length is 128
749
749
  # characters.
750
750
  # @param [String] description A description of the field.
@@ -778,7 +778,7 @@ module Google
778
778
  # See {Schema#integer}.
779
779
  #
780
780
  # @param [String] name The field name. The name must contain only
781
- # letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
781
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`), and must
782
782
  # start with a letter or underscore. The maximum length is 128
783
783
  # characters.
784
784
  # @param [String] description A description of the field.
@@ -810,7 +810,7 @@ module Google
810
810
  # See {Schema#float}.
811
811
  #
812
812
  # @param [String] name The field name. The name must contain only
813
- # letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
813
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`), and must
814
814
  # start with a letter or underscore. The maximum length is 128
815
815
  # characters.
816
816
  # @param [String] description A description of the field.
@@ -853,7 +853,7 @@ module Google
853
853
  # See {Schema#numeric}
854
854
  #
855
855
  # @param [String] name The field name. The name must contain only
856
- # letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
856
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`), and must
857
857
  # start with a letter or underscore. The maximum length is 128
858
858
  # characters.
859
859
  # @param [String] description A description of the field.
@@ -911,7 +911,7 @@ module Google
911
911
  # See {Schema#bignumeric}
912
912
  #
913
913
  # @param [String] name The field name. The name must contain only
914
- # letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
914
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`), and must
915
915
  # start with a letter or underscore. The maximum length is 128
916
916
  # characters.
917
917
  # @param [String] description A description of the field.
@@ -958,7 +958,7 @@ module Google
958
958
  # See {Schema#boolean}.
959
959
  #
960
960
  # @param [String] name The field name. The name must contain only
961
- # letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
961
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`), and must
962
962
  # start with a letter or underscore. The maximum length is 128
963
963
  # characters.
964
964
  # @param [String] description A description of the field.
@@ -990,7 +990,7 @@ module Google
990
990
  # See {Schema#bytes}.
991
991
  #
992
992
  # @param [String] name The field name. The name must contain only
993
- # letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
993
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`), and must
994
994
  # start with a letter or underscore. The maximum length is 128
995
995
  # characters.
996
996
  # @param [String] description A description of the field.
@@ -1024,7 +1024,7 @@ module Google
1024
1024
  # See {Schema#timestamp}.
1025
1025
  #
1026
1026
  # @param [String] name The field name. The name must contain only
1027
- # letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
1027
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`), and must
1028
1028
  # start with a letter or underscore. The maximum length is 128
1029
1029
  # characters.
1030
1030
  # @param [String] description A description of the field.
@@ -1056,7 +1056,7 @@ module Google
1056
1056
  # See {Schema#time}.
1057
1057
  #
1058
1058
  # @param [String] name The field name. The name must contain only
1059
- # letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
1059
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`), and must
1060
1060
  # start with a letter or underscore. The maximum length is 128
1061
1061
  # characters.
1062
1062
  # @param [String] description A description of the field.
@@ -1088,7 +1088,7 @@ module Google
1088
1088
  # See {Schema#datetime}.
1089
1089
  #
1090
1090
  # @param [String] name The field name. The name must contain only
1091
- # letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
1091
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`), and must
1092
1092
  # start with a letter or underscore. The maximum length is 128
1093
1093
  # characters.
1094
1094
  # @param [String] description A description of the field.
@@ -1120,7 +1120,7 @@ module Google
1120
1120
  # See {Schema#date}.
1121
1121
  #
1122
1122
  # @param [String] name The field name. The name must contain only
1123
- # letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
1123
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`), and must
1124
1124
  # start with a letter or underscore. The maximum length is 128
1125
1125
  # characters.
1126
1126
  # @param [String] description A description of the field.
@@ -1146,6 +1146,42 @@ module Google
1146
1146
  schema.date name, description: description, mode: mode, policy_tags: policy_tags
1147
1147
  end
1148
1148
 
1149
+ ##
1150
+ # Adds a geography field to the schema.
1151
+ #
1152
+ # See {Schema#geography}.
1153
+ #
1154
+ # @see https://cloud.google.com/bigquery/docs/gis-data Working with BigQuery GIS data
1155
+ #
1156
+ # @param [String] name The field name. The name must contain only
1157
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`), and must
1158
+ # start with a letter or underscore. The maximum length is 128
1159
+ # characters.
1160
+ # @param [String] description A description of the field.
1161
+ # @param [Symbol] mode The field's mode. The possible values are
1162
+ # `:nullable`, `:required`, and `:repeated`. The default value is
1163
+ # `:nullable`.
1164
+ # @param [Array<String>, String] policy_tags The policy tag list or
1165
+ # single policy tag for the field. Policy tag identifiers are of
1166
+ # the form `projects/*/locations/*/taxonomies/*/policyTags/*`.
1167
+ # At most 1 policy tag is currently allowed.
1168
+ #
1169
+ # @example
1170
+ # require "google/cloud/bigquery"
1171
+ #
1172
+ # bigquery = Google::Cloud::Bigquery.new
1173
+ # dataset = bigquery.dataset "my_dataset"
1174
+ # job = dataset.load_job "my_table", "gs://abc/file" do |schema|
1175
+ # schema.record "cities_lived", mode: :repeated do |cities_lived|
1176
+ # cities_lived.geography "location", mode: :required
1177
+ # cities_lived.integer "number_of_years", mode: :required
1178
+ # end
1179
+ # end
1180
+ #
1181
+ def geography name, description: nil, mode: :nullable, policy_tags: nil
1182
+ schema.geography name, description: description, mode: mode, policy_tags: policy_tags
1183
+ end
1184
+
1149
1185
  ##
1150
1186
  # Adds a record field to the schema. A block must be passed describing
1151
1187
  # the nested fields of the record. For more information about nested
@@ -1156,7 +1192,7 @@ module Google
1156
1192
  # See {Schema#record}.
1157
1193
  #
1158
1194
  # @param [String] name The field name. The name must contain only
1159
- # letters (a-z, A-Z), numbers (0-9), or underscores (_), and must
1195
+ # letters (`[A-Za-z]`), numbers (`[0-9]`), or underscores (`_`), and must
1160
1196
  # start with a letter or underscore. The maximum length is 128
1161
1197
  # characters.
1162
1198
  # @param [String] description A description of the field.