google-cloud-bigquery 1.26.0 → 1.27.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: 8c2f8d8d7a564df2c916cced8adf4c0b621a1e11250a3a04decfce08995a4a24
4
- data.tar.gz: 57bbda27d4c54e0522b564b8cdc62fb5e9dce8b26c91d3f0604c624ff113f057
3
+ metadata.gz: 334d37be375f513da083f7338e1324413409a6c30554456c08290ed1337c2701
4
+ data.tar.gz: f21c7793b5a9f82d0c3840aa5915fd10ef43644ccc1d9ea996a63860fa8b16ed
5
5
  SHA512:
6
- metadata.gz: f445a86a5435cafc236d82faf91df46a06c6cee8612d8e6c4011450c93b73b61a883510909c6bb25e72516ae1a57c8a605736d82e0b63f0b10ad25cab90a1280
7
- data.tar.gz: 43423f2bea5cea82c6c19bcf639bfb690f4718b0450140d299616ece59b147258ef877cafbc17b99c68274c310a0cd0123ae6b6db0b37bba2fb08be0395837f0
6
+ metadata.gz: 187d0549552613c40f85001fdf82197db01af5b5e285dfd6f7615a64c62ed74807c0ea31ac560d2a1516dae0c91f14fcc08b143882fcf8437b8d7c964f256348
7
+ data.tar.gz: e6b80ed9ccff8ffb2f8537a009a6d41a7930ee080f50800001b0afa9f7706a85af58180d091051f34a2499d66ca15f5c084a74cbbff244d8c22d266fc62713db
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Release History
2
2
 
3
+ ### 1.27.0 / 2021-02-10
4
+
5
+ #### Features
6
+
7
+ * Add Job#reservation_usage
8
+ * Add Routine#determinism_level
9
+ * Add Routine#determinism_level
10
+ * Add Routine#determinism_level=
11
+ * Add Routine#determinism_level_deterministic?
12
+ * Add Routine#determinism_level_not_deterministic?
13
+ * Add Routine::Updater#determinism_level=
14
+
3
15
  ### 1.26.0 / 2021-01-13
4
16
 
5
17
  #### Features
@@ -215,6 +215,17 @@ module Google
215
215
  @gapi.statistics.parent_job_id
216
216
  end
217
217
 
218
+ ##
219
+ # An array containing the job resource usage breakdown by reservation, if present. Reservation usage statistics
220
+ # are only reported for jobs that are executed within reservations. On-demand jobs do not report this data.
221
+ #
222
+ # @return [Array<Google::Cloud::Bigquery::Job::ReservationUsage>, nil] The reservation usage, if present.
223
+ #
224
+ def reservation_usage
225
+ return nil unless @gapi.statistics.reservation_usage
226
+ Array(@gapi.statistics.reservation_usage).map { |g| ReservationUsage.from_gapi g }
227
+ end
228
+
218
229
  ##
219
230
  # The statistics including stack frames for a child job of a script.
220
231
  #
@@ -489,6 +500,29 @@ module Google
489
500
  end
490
501
  end
491
502
 
503
+ ##
504
+ # Represents Job resource usage breakdown by reservation.
505
+ #
506
+ # @attr_reader [String] name The reservation name or "unreserved" for on-demand resources usage.
507
+ # @attr_reader [Fixnum] slot_ms The slot-milliseconds the job spent in the given reservation.
508
+ #
509
+ class ReservationUsage
510
+ attr_reader :name, :slot_ms
511
+
512
+ ##
513
+ # @private Creates a new ReservationUsage instance.
514
+ def initialize name, slot_ms
515
+ @name = name
516
+ @slot_ms = slot_ms
517
+ end
518
+
519
+ ##
520
+ # @private New ReservationUsage from a statistics.reservation_usage value.
521
+ def self.from_gapi gapi
522
+ new gapi.name, gapi.slot_ms
523
+ end
524
+ end
525
+
492
526
  ##
493
527
  # Represents statistics for a child job of a script.
494
528
  #
@@ -547,7 +581,7 @@ module Google
547
581
  end
548
582
 
549
583
  ##
550
- # @private New ScriptStatistics from a statistics.script_statistics object.
584
+ # @private New ScriptStatistics from a statistics.script_statistics value.
551
585
  def self.from_gapi gapi
552
586
  frames = Array(gapi.stack_frames).map { |g| ScriptStackFrame.from_gapi g }
553
587
  new gapi.evaluation_kind, frames
@@ -603,6 +603,93 @@ module Google
603
603
  update_gapi!
604
604
  end
605
605
 
606
+ ###
607
+ # The JavaScript UDF determinism level. Optional.
608
+ #
609
+ # * `DETERMINISTIC` - Deterministic indicates that two calls with the same input to a UDF yield the same output.
610
+ # If all JavaScript UDFs are `DETERMINISTIC`, the query result is potentially cachable.
611
+ # * `NOT_DETERMINISTIC` - Not deterministic indicates that the output of the UDF is not guaranteed to yield the
612
+ # same output each time for a given set of inputs. If any JavaScript UDF is `NOT_DETERMINISTIC`, the query
613
+ # result is not cacheable.
614
+ #
615
+ # Even if a JavaScript UDF is deterministic, many other factors can prevent usage of cached query results.
616
+ # Example factors include but not limited to: DDL/DML, non-deterministic SQL function calls, update of
617
+ # referenced tables/views/UDFs or imported JavaScript libraries. SQL UDFs cannot have determinism specified.
618
+ # Their determinism is automatically determined.
619
+ #
620
+ # @return [String, nil] The routine determinism level in upper case, or `nil` if not set or the object is a
621
+ # reference (see {#reference?}).
622
+ #
623
+ # @example
624
+ # require "google/cloud/bigquery"
625
+ #
626
+ # bigquery = Google::Cloud::Bigquery.new
627
+ # dataset = bigquery.dataset "my_dataset"
628
+ # routine = dataset.routine "my_routine"
629
+ #
630
+ # routine.determinism_level #=> "NOT_DETERMINISTIC"
631
+ #
632
+ # @!group Attributes
633
+ #
634
+ def determinism_level
635
+ return nil if reference?
636
+ ensure_full_data!
637
+ @gapi.determinism_level
638
+ end
639
+
640
+ ##
641
+ # Updates the JavaScript UDF determinism level. Optional.
642
+ #
643
+ # * `DETERMINISTIC` - Deterministic indicates that two calls with the same input to a UDF yield the same output.
644
+ # If all JavaScript UDFs are `DETERMINISTIC`, the query result is potentially cachable.
645
+ # * `NOT_DETERMINISTIC` - Not deterministic indicates that the output of the UDF is not guaranteed to yield the
646
+ # same output each time for a given set of inputs. If any JavaScript UDF is `NOT_DETERMINISTIC`, the query
647
+ # result is not cacheable.
648
+ #
649
+ # @param [String, nil] new_determinism_level The new routine determinism level in upper case.
650
+ #
651
+ # @example
652
+ # require "google/cloud/bigquery"
653
+ #
654
+ # bigquery = Google::Cloud::Bigquery.new
655
+ # dataset = bigquery.dataset "my_dataset"
656
+ # routine = dataset.routine "my_routine"
657
+ #
658
+ # routine.determinism_level #=> "NOT_DETERMINISTIC"
659
+ # routine.determinism_level = "DETERMINISTIC"
660
+ #
661
+ # @!group Attributes
662
+ #
663
+ def determinism_level= new_determinism_level
664
+ ensure_full_data!
665
+ @gapi.determinism_level = new_determinism_level
666
+ update_gapi!
667
+ end
668
+
669
+ ##
670
+ # Checks if the value of {#determinism_level} is `DETERMINISTIC`. The default is `false`.
671
+ #
672
+ # @return [Boolean] `true` when `DETERMINISTIC` and the object is not a reference (see {#reference?}), `false`
673
+ # otherwise.
674
+ #
675
+ # @!group Attributes
676
+ #
677
+ def determinism_level_deterministic?
678
+ @gapi.determinism_level == "DETERMINISTIC"
679
+ end
680
+
681
+ ##
682
+ # Checks if the value of {#determinism_level} is `NOT_DETERMINISTIC`. The default is `false`.
683
+ #
684
+ # @return [Boolean] `true` when `NOT_DETERMINISTIC` and the object is not a reference (see {#reference?}),
685
+ # `false` otherwise.
686
+ #
687
+ # @!group Attributes
688
+ #
689
+ def determinism_level_not_deterministic?
690
+ @gapi.determinism_level == "NOT_DETERMINISTIC"
691
+ end
692
+
606
693
  ##
607
694
  # Updates the routine with changes made in the given block in a single update request. The following attributes
608
695
  # may be set: {Updater#routine_type=}, {Updater#language=}, {Updater#arguments=}, {Updater#return_type=},
@@ -999,7 +1086,9 @@ module Google
999
1086
  # routine = dataset.routine "my_routine"
1000
1087
  #
1001
1088
  # routine.return_type.type_kind #=> "INT64"
1002
- # routine.return_type = "STRING"
1089
+ # routine.update do |r|
1090
+ # r.return_type = "STRING"
1091
+ # end
1003
1092
  #
1004
1093
  def return_type= new_return_type
1005
1094
  @gapi.return_type = StandardSql::DataType.gapi_from_string_or_data_type new_return_type
@@ -1019,9 +1108,11 @@ module Google
1019
1108
  # dataset = bigquery.dataset "my_dataset"
1020
1109
  # routine = dataset.routine "my_routine"
1021
1110
  #
1022
- # routine.imported_libraries = [
1023
- # "gs://cloud-samples-data/bigquery/udfs/max-value.js"
1024
- # ]
1111
+ # routine.update do |r|
1112
+ # r.imported_libraries = [
1113
+ # "gs://cloud-samples-data/bigquery/udfs/max-value.js"
1114
+ # ]
1115
+ # end
1025
1116
  #
1026
1117
  def imported_libraries= new_imported_libraries
1027
1118
  @gapi.imported_libraries = new_imported_libraries
@@ -1069,12 +1160,43 @@ module Google
1069
1160
  # routine = dataset.routine "my_routine"
1070
1161
  #
1071
1162
  # routine.description #=> "My routine description"
1072
- # routine.description = "My updated routine description"
1163
+ # routine.update do |r|
1164
+ # r.description = "My updated routine description"
1165
+ # end
1073
1166
  #
1074
1167
  def description= new_description
1075
1168
  @gapi.description = new_description
1076
1169
  end
1077
1170
 
1171
+ ##
1172
+ # Updates the JavaScript UDF determinism level. Optional.
1173
+ #
1174
+ # * `DETERMINISTIC` - Deterministic indicates that two calls with the same input to a UDF yield the same
1175
+ # output. If all JavaScript UDFs are `DETERMINISTIC`, the query result is potentially cachable.
1176
+ # * `NOT_DETERMINISTIC` - Not deterministic indicates that the output of the UDF is not guaranteed to yield
1177
+ # the same output each time for a given set of inputs. If any JavaScript UDF is `NOT_DETERMINISTIC`, the
1178
+ # query result is not cacheable.
1179
+ #
1180
+ # @param [String, nil] new_determinism_level The new routine determinism level in upper case.
1181
+ #
1182
+ # @example
1183
+ # require "google/cloud/bigquery"
1184
+ #
1185
+ # bigquery = Google::Cloud::Bigquery.new
1186
+ # dataset = bigquery.dataset "my_dataset"
1187
+ # routine = dataset.routine "my_routine"
1188
+ #
1189
+ # routine.determinism_level #=> "NOT_DETERMINISTIC"
1190
+ # routine.update do |r|
1191
+ # r.determinism_level = "DETERMINISTIC"
1192
+ # end
1193
+ #
1194
+ # @!group Attributes
1195
+ #
1196
+ def determinism_level= new_determinism_level
1197
+ @gapi.determinism_level = new_determinism_level
1198
+ end
1199
+
1078
1200
  def update
1079
1201
  raise "not implemented in #{self.class}"
1080
1202
  end
@@ -16,7 +16,7 @@
16
16
  module Google
17
17
  module Cloud
18
18
  module Bigquery
19
- VERSION = "1.26.0".freeze
19
+ VERSION = "1.27.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.26.0
4
+ version: 1.27.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: 2021-01-13 00:00:00.000000000 Z
12
+ date: 2021-02-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: concurrent-ruby
@@ -291,7 +291,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
291
291
  - !ruby/object:Gem::Version
292
292
  version: '0'
293
293
  requirements: []
294
- rubygems_version: 3.1.4
294
+ rubygems_version: 3.2.6
295
295
  signing_key:
296
296
  specification_version: 4
297
297
  summary: API Client library for Google BigQuery