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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 779c0f4690b370db6eb7811fa6fb8dbca101dff34ff478dcdc51ed1e9c83c083
4
- data.tar.gz: d1456024ae30a18c93c05d6d8be7eef88dd3f0610cdbf816cf0c46322c9574be
3
+ metadata.gz: ade2c82829a9b7d91e10ed3e475e940d03c33d01f09c8322bf9412fb5beb96db
4
+ data.tar.gz: d6379bc028117ffa5c16ab4fd4936f55e78f66e6d8550a222426d13ef472a2dc
5
5
  SHA512:
6
- metadata.gz: 6a5da0e2565b0c224f46a6330d138c8fb35831e874ebc2364fd3b91578d400354011d1e9df7d2986dbe2398f610776b130b7eb9305af8282bf3a6265dd84aa05
7
- data.tar.gz: 0d14faa0d89ba6a114e247c362f8a5d4775ae4dc19de1aad0a64083da7e41fc93ac810e876b434056340b27412bb08063af05edf33355800ca1c528ff02f437b
6
+ metadata.gz: 7df1b27b3d0e4fd7a4de8de68911b9748c8b80c28bc8e1cc067357e3798d5905c70c44b36cfa9075b37935e90648cd8f5ac57437f299ae1f0cdd0de51bd39fb9
7
+ data.tar.gz: 6331414d5f3b02f69c9649454e13fd078fd95420c48f54623196325f050b6c6f4bb4d7df9c799bd63839db0a11fbc9d2bcebf0a227d33bf935e7ff10861d90dd
data/CHANGELOG.md CHANGED
@@ -1,5 +1,77 @@
1
1
  # Release History
2
2
 
3
+ ### 1.49.0 (2024-03-10)
4
+
5
+ #### Features
6
+
7
+ * Update minimum supported Ruby version to 2.7 ([#25298](https://github.com/googleapis/google-cloud-ruby/issues/25298))
8
+
9
+ ### 1.48.1 (2024-02-10)
10
+
11
+ #### Documentation
12
+
13
+ * Correct an example snippet related to storage_billing_model ([#24796](https://github.com/googleapis/google-cloud-ruby/issues/24796))
14
+
15
+ ### 1.48.0 (2024-02-08)
16
+
17
+ #### Features
18
+
19
+ * Support accessing storage_ billing_model field in a dataset ([#24755](https://github.com/googleapis/google-cloud-ruby/issues/24755))
20
+
21
+ ### 1.47.0 (2024-02-05)
22
+
23
+ #### Features
24
+
25
+ * add json type support ([#24491](https://github.com/googleapis/google-cloud-ruby/issues/24491))
26
+
27
+ ### 1.46.1 (2024-01-26)
28
+
29
+ #### Bug Fixes
30
+
31
+ * Raise an error on mismatching universe domain ([#24485](https://github.com/googleapis/google-cloud-ruby/issues/24485))
32
+
33
+ ### 1.46.0 (2024-01-25)
34
+
35
+ #### Features
36
+
37
+ * Support for universe_domain ([#24448](https://github.com/googleapis/google-cloud-ruby/issues/24448))
38
+
39
+ ### 1.45.0 (2023-09-25)
40
+
41
+ #### Features
42
+
43
+ * support load job with session ([#23320](https://github.com/googleapis/google-cloud-ruby/issues/23320))
44
+
45
+ ### 1.44.2 (2023-09-12)
46
+
47
+ #### Bug Fixes
48
+
49
+ * Avoid dataset reload when accessing location ([#22905](https://github.com/googleapis/google-cloud-ruby/issues/22905))
50
+
51
+ ### 1.44.1 (2023-09-08)
52
+
53
+ #### Bug Fixes
54
+
55
+ * remove unnecessary warning ([#22904](https://github.com/googleapis/google-cloud-ruby/issues/22904))
56
+
57
+ ### 1.44.0 (2023-09-04)
58
+
59
+ #### Features
60
+
61
+ * support BIGQUERY_EMULATOR_HOST env variable for endpoint
62
+
63
+ ### 1.43.1 (2023-05-19)
64
+
65
+ #### Bug Fixes
66
+
67
+ * ensure schema for data parsing ([#21616](https://github.com/googleapis/google-cloud-ruby/issues/21616))
68
+
69
+ ### 1.43.0 (2023-05-10)
70
+
71
+ #### Features
72
+
73
+ * Added support for default value expression ([#21540](https://github.com/googleapis/google-cloud-ruby/issues/21540))
74
+
3
75
  ### 1.42.0 (2023-01-15)
4
76
 
5
77
  #### Features
@@ -39,6 +39,7 @@ module Google
39
39
  # | `DATETIME` | `DateTime` | `DATETIME` does not support time zone. |
40
40
  # | `DATE` | `Date` | |
41
41
  # | `GEOGRAPHY` | `String` | |
42
+ # | `JSON` | `String` | String, as JSON does not have a schema to verify. |
42
43
  # | `TIMESTAMP` | `Time` | |
43
44
  # | `TIME` | `Google::Cloud::BigQuery::Time` | |
44
45
  # | `BYTES` | `File`, `IO`, `StringIO`, or similar | |
@@ -72,7 +73,7 @@ module Google
72
73
  value[:v].map { |v| format_value v, field }
73
74
  elsif Hash === value[:v]
74
75
  format_row value[:v], field.fields
75
- elsif field.type == "STRING"
76
+ elsif field.type == "STRING" || field.type == "JSON" || field.type == "GEOGRAPHY"
76
77
  String value[:v]
77
78
  elsif field.type == "INTEGER"
78
79
  Integer value[:v]
@@ -102,8 +103,6 @@ module Google
102
103
  ::Time.parse("#{value[:v]} UTC").to_datetime
103
104
  elsif field.type == "DATE"
104
105
  Date.parse value[:v]
105
- elsif field.type == "GEOGRAPHY"
106
- String value[:v]
107
106
  else
108
107
  value[:v]
109
108
  end
@@ -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
 
@@ -413,6 +412,56 @@ module Google
413
412
  patch_gapi! :default_encryption_configuration
414
413
  end
415
414
 
415
+ ##
416
+ # Gets the Storage Billing Model for the dataset.
417
+ #
418
+ # @see https://cloud.google.com/blog/products/data-analytics/new-bigquery-billing-model-helps-reduce-physical-storage-costs
419
+ #
420
+ # @return [String, nil] A string containing the storage billing model, or `nil`.
421
+ # Possible values of the string are `LOGICAL`, `PHYSICAL`.
422
+ # It returns `nil` if either the object is a reference (see {#reference?}),
423
+ # or if the storage billing model is unspecified.
424
+ #
425
+ # @example
426
+ #
427
+ # require "google/cloud/bigquery"
428
+ #
429
+ # bigquery = Google::Cloud::Bigquery.new
430
+ # dataset = bigquery.dataset "my_dataset"
431
+ #
432
+ # storage_billing_model = dataset.storage_billing_model
433
+ #
434
+ # @!group Attributes
435
+ #
436
+ def storage_billing_model
437
+ return nil if reference?
438
+ ensure_full_data!
439
+ @gapi.storage_billing_model
440
+ end
441
+
442
+ ##
443
+ # Sets the Storage Billing Model for the dataset.
444
+ #
445
+ # @see https://cloud.google.com/blog/products/data-analytics/new-bigquery-billing-model-helps-reduce-physical-storage-costs
446
+ #
447
+ # @param value [String] The new storage billing model. Accepted values
448
+ # are `LOGICAL` and `PHYSICAL`.
449
+ #
450
+ # @example
451
+ # require "google/cloud/bigquery"
452
+ #
453
+ # bigquery = Google::Cloud::Bigquery.new
454
+ # dataset = bigquery.dataset "my_dataset"
455
+ # dataset.storage_billing_model = "LOGICAL"
456
+ #
457
+ # @!group Attributes
458
+ #
459
+ def storage_billing_model= value
460
+ ensure_full_data!
461
+ @gapi.storage_billing_model = value
462
+ patch_gapi! :storage_billing_model
463
+ end
464
+
416
465
  ##
417
466
  # Retrieves the access rules for a Dataset. The rules can be updated
418
467
  # when passing a block, see {Dataset::Access} for all the methods
@@ -479,7 +528,7 @@ module Google
479
528
  def tags
480
529
  ensure_full_data!
481
530
  return nil if @gapi.tags.nil?
482
- @gapi.tags.map { |gapi| Tag.from_gapi(gapi) }
531
+ @gapi.tags.map { |gapi| Tag.from_gapi gapi }
483
532
  end
484
533
 
485
534
  ##
@@ -720,7 +769,7 @@ module Google
720
769
  use_legacy_sql: use_legacy_sql,
721
770
  user_defined_function_resources: udfs_gapi(udfs)
722
771
  )
723
- }.delete_if { |_, v| v.nil? }
772
+ }.compact
724
773
  new_view = Google::Apis::BigqueryV2::Table.new(**new_view_opts)
725
774
 
726
775
  gapi = service.insert_table dataset_id, new_view
@@ -794,7 +843,7 @@ module Google
794
843
  query: query,
795
844
  refresh_interval_ms: refresh_interval_ms
796
845
  )
797
- }.delete_if { |_, v| v.nil? }
846
+ }.compact
798
847
  new_view = Google::Apis::BigqueryV2::Table.new(**new_view_opts)
799
848
 
800
849
  gapi = service.insert_table dataset_id, new_view
@@ -1181,6 +1230,7 @@ module Google
1181
1230
  # | `DATETIME` | `DateTime` | `DATETIME` does not support time zone. |
1182
1231
  # | `DATE` | `Date` | |
1183
1232
  # | `GEOGRAPHY` | `String` (WKT or GeoJSON) | NOT AUTOMATIC: Must be mapped using `types`, below.|
1233
+ # | `JSON` | `String` (Stringified JSON) | String, as JSON does not have a schema to verify. |
1184
1234
  # | `TIMESTAMP` | `Time` | |
1185
1235
  # | `TIME` | `Google::Cloud::BigQuery::Time` | |
1186
1236
  # | `BYTES` | `File`, `IO`, `StringIO`, or similar | |
@@ -1207,6 +1257,7 @@ module Google
1207
1257
  # * `:DATETIME`
1208
1258
  # * `:DATE`
1209
1259
  # * `:GEOGRAPHY`
1260
+ # * `:JSON`
1210
1261
  # * `:TIMESTAMP`
1211
1262
  # * `:TIME`
1212
1263
  # * `:BYTES`
@@ -1586,6 +1637,7 @@ module Google
1586
1637
  # | `DATETIME` | `DateTime` | `DATETIME` does not support time zone. |
1587
1638
  # | `DATE` | `Date` | |
1588
1639
  # | `GEOGRAPHY` | `String` (WKT or GeoJSON) | NOT AUTOMATIC: Must be mapped using `types`, below.|
1640
+ # | `JSON` | `String` (Stringified JSON) | String, as JSON does not have a schema to verify. |
1589
1641
  # | `TIMESTAMP` | `Time` | |
1590
1642
  # | `TIME` | `Google::Cloud::BigQuery::Time` | |
1591
1643
  # | `BYTES` | `File`, `IO`, `StringIO`, or similar | |
@@ -1612,6 +1664,7 @@ module Google
1612
1664
  # * `:DATETIME`
1613
1665
  # * `:DATE`
1614
1666
  # * `:GEOGRAPHY`
1667
+ # * `:JSON`
1615
1668
  # * `:TIMESTAMP`
1616
1669
  # * `:TIME`
1617
1670
  # * `:BYTES`
@@ -2031,15 +2084,20 @@ module Google
2031
2084
  # * The key portion of a label must be unique. However, you can use the
2032
2085
  # same key with multiple resources.
2033
2086
  # * Keys must start with a lowercase letter or international character.
2087
+ # @param [Boolean] dryrun If set, don't actually run this job. Behavior
2088
+ # is undefined however for non-query jobs and may result in an error.
2089
+ # Deprecated.
2090
+ # @param [Boolean] create_session If set to true a new session will be created
2091
+ # and the load job will happen in the table created within that session.
2092
+ # Note: This will work only for _SESSION dataset.
2093
+ # @param [string] session_id Session ID in which the load job must run.
2094
+ #
2034
2095
  # @yield [updater] A block for setting the schema and other
2035
2096
  # options for the destination table. The schema can be omitted if the
2036
2097
  # destination table already exists, or if you're loading data from a
2037
2098
  # Google Cloud Datastore backup.
2038
2099
  # @yieldparam [Google::Cloud::Bigquery::LoadJob::Updater] updater An
2039
2100
  # 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
2101
  #
2044
2102
  # @return [Google::Cloud::Bigquery::LoadJob] A new load job object.
2045
2103
  #
@@ -2127,7 +2185,7 @@ module Google
2127
2185
  def load_job table_id, files, format: nil, create: nil, write: nil, projection_fields: nil, jagged_rows: nil,
2128
2186
  quoted_newlines: nil, encoding: nil, delimiter: nil, ignore_unknown: nil, max_bad_records: nil,
2129
2187
  quote: nil, skip_leading: nil, schema: nil, job_id: nil, prefix: nil, labels: nil, autodetect: nil,
2130
- null_marker: nil, dryrun: nil
2188
+ null_marker: nil, dryrun: nil, create_session: nil, session_id: nil
2131
2189
  ensure_service!
2132
2190
 
2133
2191
  updater = load_job_updater table_id,
@@ -2136,7 +2194,8 @@ module Google
2136
2194
  delimiter: delimiter, ignore_unknown: ignore_unknown,
2137
2195
  max_bad_records: max_bad_records, quote: quote, skip_leading: skip_leading,
2138
2196
  dryrun: dryrun, schema: schema, job_id: job_id, prefix: prefix, labels: labels,
2139
- autodetect: autodetect, null_marker: null_marker
2197
+ autodetect: autodetect, null_marker: null_marker, create_session: create_session,
2198
+ session_id: session_id
2140
2199
 
2141
2200
  yield updater if block_given?
2142
2201
 
@@ -2262,6 +2321,8 @@ module Google
2262
2321
  # See {Project#schema} for the creation of the schema for use with
2263
2322
  # this option. Also note that for most use cases, the block yielded by
2264
2323
  # this method is a more convenient way to configure the schema.
2324
+ # @param [string] session_id Session ID in which the load job must run.
2325
+ #
2265
2326
  #
2266
2327
  # @yield [updater] A block for setting the schema of the destination
2267
2328
  # table and other options for the load job. The schema can be omitted
@@ -2354,13 +2415,13 @@ module Google
2354
2415
  #
2355
2416
  def load table_id, files, format: nil, create: nil, write: nil, projection_fields: nil, jagged_rows: nil,
2356
2417
  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
2418
+ quote: nil, skip_leading: nil, schema: nil, autodetect: nil, null_marker: nil, session_id: nil, &block
2358
2419
  job = load_job table_id, files,
2359
2420
  format: format, create: create, write: write, projection_fields: projection_fields,
2360
2421
  jagged_rows: jagged_rows, quoted_newlines: quoted_newlines, encoding: encoding,
2361
2422
  delimiter: delimiter, ignore_unknown: ignore_unknown, max_bad_records: max_bad_records,
2362
2423
  quote: quote, skip_leading: skip_leading, schema: schema, autodetect: autodetect,
2363
- null_marker: null_marker, &block
2424
+ null_marker: null_marker, session_id: session_id, &block
2364
2425
 
2365
2426
  job.wait_until_done!
2366
2427
  ensure_job_succeeded! job
@@ -2546,6 +2607,7 @@ module Google
2546
2607
  # | `DATETIME` | `DateTime` | `DATETIME` does not support time zone. |
2547
2608
  # | `DATE` | `Date` | |
2548
2609
  # | `GEOGRAPHY` | `String` | |
2610
+ # | `JSON` | `String` (Stringified JSON) | String, as JSON does not have a schema to verify. |
2549
2611
  # | `TIMESTAMP` | `Time` | |
2550
2612
  # | `TIME` | `Google::Cloud::BigQuery::Time` | |
2551
2613
  # | `BYTES` | `File`, `IO`, `StringIO`, or similar | |
@@ -2776,7 +2838,7 @@ module Google
2776
2838
  params = {
2777
2839
  dataset: dataset_ref,
2778
2840
  target_types: target_types
2779
- }.delete_if { |_, v| v.nil? }
2841
+ }.compact
2780
2842
  Google::Apis::BigqueryV2::DatasetAccessEntry.new(**params)
2781
2843
  end
2782
2844
 
@@ -2904,7 +2966,8 @@ module Google
2904
2966
  def load_job_updater table_id, format: nil, create: nil, write: nil, projection_fields: nil, jagged_rows: nil,
2905
2967
  quoted_newlines: nil, encoding: nil, delimiter: nil, ignore_unknown: nil,
2906
2968
  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
2969
+ prefix: nil, labels: nil, autodetect: nil, null_marker: nil, create_session: nil,
2970
+ session_id: nil
2908
2971
  new_job = load_job_gapi table_id, dryrun, job_id: job_id, prefix: prefix
2909
2972
  LoadJob::Updater.new(new_job).tap do |job|
2910
2973
  job.location = location if location # may be dataset reference
@@ -2913,6 +2976,8 @@ module Google
2913
2976
  job.schema = schema unless schema.nil?
2914
2977
  job.autodetect = autodetect unless autodetect.nil?
2915
2978
  job.labels = labels unless labels.nil?
2979
+ job.create_session = create_session unless create_session.nil?
2980
+ job.session_id = session_id unless session_id.nil?
2916
2981
  load_job_file_options! job, format: format,
2917
2982
  projection_fields: projection_fields,
2918
2983
  jagged_rows: jagged_rows,