Reference documentation and code samples for the BigQuery API class Google::Cloud::Bigquery::Routine::Updater.
Yielded to a block to accumulate changes. See Dataset#create_routine and #update.
Inherits
Examples
Creating a new routine:
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" routine = dataset.create_routine "my_routine" do |r| r.routine_type = "SCALAR_FUNCTION" r.language = "SQL" r.arguments = [ Google::Cloud::Bigquery::Argument.new(name: "x", data_type: "INT64") ] r.body = "x * 3" r.description = "My routine description" end puts routine.routine_id
Updating an existing routine:
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" routine = dataset.routine "my_routine" routine.update do |r| r.body = "x * 4" r.description = "My new routine description" end
Methods
#arguments=
def arguments=(new_arguments)
Updates the input/output arguments of the routine. Optional.
- new_arguments (Array<Argument>) — The new arguments.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" routine = dataset.routine "my_routine" routine.arguments = [ Google::Cloud::Bigquery::Argument.new(name: "x", data_type: "INT64") ]
#body=
def body=(new_body)
Updates the body of the routine. Required.
For functions (#scalar_function?), this is the expression in the AS
clause.
When the routine is a SQL function (#sql?), it is the substring inside (but excluding) the parentheses.
For example, for the function created with the following statement:
CREATE FUNCTION JoinLines(x string, y string) as (concat(x, "\n", y))
The definition_body is concat(x, "\n", y)
(\n
is not replaced with linebreak).
When the routine is a JavaScript function (#javascript?), it is the evaluated string in the AS
clause.
For example, for the function created with the following statement:
CREATE FUNCTION f() RETURNS STRING LANGUAGE js AS 'return "\n";\n'
The definition_body is
"return "\n";\n"`
Note that both \n
are replaced with linebreaks.
- new_body (String) — The new body of the routine.
#delete
def delete()
#description=
def description=(new_description)
Updates the description of the routine. Optional. [Experimental]
- new_description (String) — The new routine description.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" routine = dataset.routine "my_routine" routine.description #=> "My routine description" routine.update do |r| r.description = "My updated routine description" end
#determinism_level=
def determinism_level=(new_determinism_level)
Updates the JavaScript UDF determinism level. Optional.
DETERMINISTIC
- Deterministic indicates that two calls with the same input to a UDF yield the same output. If all JavaScript UDFs areDETERMINISTIC
, the query result is potentially cachable.NOT_DETERMINISTIC
- Not deterministic indicates that the output of the UDF is not guaranteed to yield the same output each time for a given set of inputs. If any JavaScript UDF isNOT_DETERMINISTIC
, the query result is not cacheable.
- new_determinism_level (String, nil) — The new routine determinism level in upper case.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" routine = dataset.routine "my_routine" routine.determinism_level #=> "NOT_DETERMINISTIC" routine.update do |r| r.determinism_level = "DETERMINISTIC" end
#imported_libraries=
def imported_libraries=(new_imported_libraries)
Updates the list of the Google Cloud Storage URIs of imported JavaScript libraries. Optional. Only used if
#language is JAVASCRIPT
(#javascript?).
-
new_imported_libraries (Array<String>, nil) — An array of Google Cloud Storage URIs, e.g.
["gs://cloud-samples-data/bigquery/udfs/max-value.js"]
.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" routine = dataset.routine "my_routine" routine.update do |r| r.imported_libraries = [ "gs://cloud-samples-data/bigquery/udfs/max-value.js" ] end
#language=
def language=(new_language)
Updates the programming language of routine. Optional. Defaults to "SQL".
SQL
- SQL language.JAVASCRIPT
- JavaScript language.
- new_language (String) — The new language in upper case.
#refresh!
def refresh!()
#reload!
def reload!()
#return_type=
def return_type=(new_return_type)
Updates the return type of the routine. Optional if the routine is a SQL function (#sql?); required otherwise.
If absent, the return type is inferred from #body at query time in each query that references this routine. If present, then the evaluated result will be cast to the specified returned type at query time.
For example, for the functions created with the following statements:
CREATE FUNCTION Add(x FLOAT64, y FLOAT64) RETURNS FLOAT64 AS (x + y);
CREATE FUNCTION Increment(x FLOAT64) AS (Add(x, 1));
CREATE FUNCTION Decrement(x FLOAT64) RETURNS FLOAT64 AS (Add(x, -1));
The returnType is {typeKind: "FLOAT64"}
for Add and Decrement, and is absent for Increment (inferred as
FLOAT64
at query time).
Suppose the function Add is replaced by CREATE OR REPLACE FUNCTION Add(x INT64, y INT64) AS (x + y);
Then the inferred return type of Increment is automatically changed to INT64
at query time, while the
return type of Decrement remains FLOAT64
.
- new_return_type (Google::Cloud::Bigquery::StandardSql::DataType, String) — The new return type for the routine.
require "google/cloud/bigquery" bigquery = Google::Cloud::Bigquery.new dataset = bigquery.dataset "my_dataset" routine = dataset.routine "my_routine" routine.return_type.type_kind #=> "INT64" routine.update do |r| r.return_type = "STRING" end
#routine_type=
def routine_type=(new_routine_type)
Updates the type of routine. Required.
SCALAR_FUNCTION
- Non-builtin permanent scalar function.PROCEDURE
- Stored procedure.
- new_routine_type (String) — The new type of the routine.
#update
def update()