delete(projectId=*, datasetId=*, routineId=*)
Deletes the routine specified by routineId from the dataset.
get(projectId=*, datasetId=*, routineId=*, readMask=None)
Gets the specified routine resource by routine ID.
insert(projectId=*, datasetId=*, body=None)
Creates a new routine in the dataset.
list(projectId=*, datasetId=*, filter=None, pageToken=None, maxResults=None, readMask=None)
Lists all routines in the specified dataset. Requires the READER dataset
list_next(previous_request=*, previous_response=*)
Retrieves the next page of results.
update(projectId=*, datasetId=*, routineId=*, body=None)
Updates information in an existing routine. The update method replaces the
delete(projectId=*, datasetId=*, routineId=*)
Deletes the routine specified by routineId from the dataset. Args: projectId: string, Required. Project ID of the routine to delete (required) datasetId: string, Required. Dataset ID of the routine to delete (required) routineId: string, Required. Routine ID of the routine to delete (required)
get(projectId=*, datasetId=*, routineId=*, readMask=None)
Gets the specified routine resource by routine ID. Args: projectId: string, Required. Project ID of the requested routine (required) datasetId: string, Required. Dataset ID of the requested routine (required) routineId: string, Required. Routine ID of the requested routine (required) readMask: string, If set, only the Routine fields in the field mask are returned in the response. If unset, all Routine fields are returned. Returns: An object of the form: { # A user-defined function or a stored procedure. "routineType": "A String", # Required. The type of routine. "description": "A String", # Optional. [Experimental] The description of the routine if defined. "language": "A String", # Optional. Defaults to "SQL". "importedLibraries": [ # Optional. If language = "JAVASCRIPT", this field stores the path of the # imported JAVASCRIPT libraries. "A String", ], "creationTime": "A String", # Output only. The time when this routine was created, in milliseconds since # the epoch. "routineReference": { # Required. Reference describing the ID of this routine. "projectId": "A String", # [Required] The ID of the project containing this routine. "routineId": "A String", # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters. "datasetId": "A String", # [Required] The ID of the dataset containing this routine. }, "etag": "A String", # Output only. A hash of this resource. "definitionBody": "A String", # Required. The body of the routine. # # For functions, this is the expression in the AS clause. # # If language=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). # # If language=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. "returnType": { # The type of a variable, e.g., a function argument. # Optional if language = "SQL"; required otherwise. # # If absent, the return type is inferred from definition_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 return_type is `{type_kind: "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. # Examples: # INT64: {type_kind="INT64"} # ARRAY<STRING>: {type_kind="ARRAY", array_element_type="STRING"} # STRUCT<x STRING, y ARRAY<DATE>>: # {type_kind="STRUCT", # struct_type={fields=[ # {name="x", type={type_kind="STRING"}}, # {name="y", type={type_kind="ARRAY", array_element_type="DATE"}} # ]}} "structType": { # The fields of this struct, in order, if type_kind = "STRUCT". "fields": [ # Object with schema name: StandardSqlField ], }, "arrayElementType": # Object with schema name: StandardSqlDataType # The type of the array's elements, if type_kind = "ARRAY". "typeKind": "A String", # Required. The top level type of this field. # Can be any standard SQL data type (e.g., "INT64", "DATE", "ARRAY"). }, "lastModifiedTime": "A String", # Output only. The time when this routine was last modified, in milliseconds # since the epoch. "arguments": [ # Optional. { # Input/output argument of a function or a stored procedure. "dataType": { # The type of a variable, e.g., a function argument. # Required unless argument_kind = ANY_TYPE. # Examples: # INT64: {type_kind="INT64"} # ARRAY<STRING>: {type_kind="ARRAY", array_element_type="STRING"} # STRUCT<x STRING, y ARRAY<DATE>>: # {type_kind="STRUCT", # struct_type={fields=[ # {name="x", type={type_kind="STRING"}}, # {name="y", type={type_kind="ARRAY", array_element_type="DATE"}} # ]}} "structType": { # The fields of this struct, in order, if type_kind = "STRUCT". "fields": [ # Object with schema name: StandardSqlField ], }, "arrayElementType": # Object with schema name: StandardSqlDataType # The type of the array's elements, if type_kind = "ARRAY". "typeKind": "A String", # Required. The top level type of this field. # Can be any standard SQL data type (e.g., "INT64", "DATE", "ARRAY"). }, "argumentKind": "A String", # Optional. Defaults to FIXED_TYPE. "name": "A String", # Optional. The name of this argument. Can be absent for function return argument. "mode": "A String", # Optional. Specifies whether the argument is input or output. # Can be set for procedures only. }, ], }
insert(projectId=*, datasetId=*, body=None)
Creates a new routine in the dataset. Args: projectId: string, Required. Project ID of the new routine (required) datasetId: string, Required. Dataset ID of the new routine (required) body: object, The request body. The object takes the form of: { # A user-defined function or a stored procedure. "routineType": "A String", # Required. The type of routine. "description": "A String", # Optional. [Experimental] The description of the routine if defined. "language": "A String", # Optional. Defaults to "SQL". "importedLibraries": [ # Optional. If language = "JAVASCRIPT", this field stores the path of the # imported JAVASCRIPT libraries. "A String", ], "creationTime": "A String", # Output only. The time when this routine was created, in milliseconds since # the epoch. "routineReference": { # Required. Reference describing the ID of this routine. "projectId": "A String", # [Required] The ID of the project containing this routine. "routineId": "A String", # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters. "datasetId": "A String", # [Required] The ID of the dataset containing this routine. }, "etag": "A String", # Output only. A hash of this resource. "definitionBody": "A String", # Required. The body of the routine. # # For functions, this is the expression in the AS clause. # # If language=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). # # If language=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. "returnType": { # The type of a variable, e.g., a function argument. # Optional if language = "SQL"; required otherwise. # # If absent, the return type is inferred from definition_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 return_type is `{type_kind: "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. # Examples: # INT64: {type_kind="INT64"} # ARRAY<STRING>: {type_kind="ARRAY", array_element_type="STRING"} # STRUCT<x STRING, y ARRAY<DATE>>: # {type_kind="STRUCT", # struct_type={fields=[ # {name="x", type={type_kind="STRING"}}, # {name="y", type={type_kind="ARRAY", array_element_type="DATE"}} # ]}} "structType": { # The fields of this struct, in order, if type_kind = "STRUCT". "fields": [ # Object with schema name: StandardSqlField ], }, "arrayElementType": # Object with schema name: StandardSqlDataType # The type of the array's elements, if type_kind = "ARRAY". "typeKind": "A String", # Required. The top level type of this field. # Can be any standard SQL data type (e.g., "INT64", "DATE", "ARRAY"). }, "lastModifiedTime": "A String", # Output only. The time when this routine was last modified, in milliseconds # since the epoch. "arguments": [ # Optional. { # Input/output argument of a function or a stored procedure. "dataType": { # The type of a variable, e.g., a function argument. # Required unless argument_kind = ANY_TYPE. # Examples: # INT64: {type_kind="INT64"} # ARRAY<STRING>: {type_kind="ARRAY", array_element_type="STRING"} # STRUCT<x STRING, y ARRAY<DATE>>: # {type_kind="STRUCT", # struct_type={fields=[ # {name="x", type={type_kind="STRING"}}, # {name="y", type={type_kind="ARRAY", array_element_type="DATE"}} # ]}} "structType": { # The fields of this struct, in order, if type_kind = "STRUCT". "fields": [ # Object with schema name: StandardSqlField ], }, "arrayElementType": # Object with schema name: StandardSqlDataType # The type of the array's elements, if type_kind = "ARRAY". "typeKind": "A String", # Required. The top level type of this field. # Can be any standard SQL data type (e.g., "INT64", "DATE", "ARRAY"). }, "argumentKind": "A String", # Optional. Defaults to FIXED_TYPE. "name": "A String", # Optional. The name of this argument. Can be absent for function return argument. "mode": "A String", # Optional. Specifies whether the argument is input or output. # Can be set for procedures only. }, ], } Returns: An object of the form: { # A user-defined function or a stored procedure. "routineType": "A String", # Required. The type of routine. "description": "A String", # Optional. [Experimental] The description of the routine if defined. "language": "A String", # Optional. Defaults to "SQL". "importedLibraries": [ # Optional. If language = "JAVASCRIPT", this field stores the path of the # imported JAVASCRIPT libraries. "A String", ], "creationTime": "A String", # Output only. The time when this routine was created, in milliseconds since # the epoch. "routineReference": { # Required. Reference describing the ID of this routine. "projectId": "A String", # [Required] The ID of the project containing this routine. "routineId": "A String", # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters. "datasetId": "A String", # [Required] The ID of the dataset containing this routine. }, "etag": "A String", # Output only. A hash of this resource. "definitionBody": "A String", # Required. The body of the routine. # # For functions, this is the expression in the AS clause. # # If language=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). # # If language=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. "returnType": { # The type of a variable, e.g., a function argument. # Optional if language = "SQL"; required otherwise. # # If absent, the return type is inferred from definition_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 return_type is `{type_kind: "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. # Examples: # INT64: {type_kind="INT64"} # ARRAY<STRING>: {type_kind="ARRAY", array_element_type="STRING"} # STRUCT<x STRING, y ARRAY<DATE>>: # {type_kind="STRUCT", # struct_type={fields=[ # {name="x", type={type_kind="STRING"}}, # {name="y", type={type_kind="ARRAY", array_element_type="DATE"}} # ]}} "structType": { # The fields of this struct, in order, if type_kind = "STRUCT". "fields": [ # Object with schema name: StandardSqlField ], }, "arrayElementType": # Object with schema name: StandardSqlDataType # The type of the array's elements, if type_kind = "ARRAY". "typeKind": "A String", # Required. The top level type of this field. # Can be any standard SQL data type (e.g., "INT64", "DATE", "ARRAY"). }, "lastModifiedTime": "A String", # Output only. The time when this routine was last modified, in milliseconds # since the epoch. "arguments": [ # Optional. { # Input/output argument of a function or a stored procedure. "dataType": { # The type of a variable, e.g., a function argument. # Required unless argument_kind = ANY_TYPE. # Examples: # INT64: {type_kind="INT64"} # ARRAY<STRING>: {type_kind="ARRAY", array_element_type="STRING"} # STRUCT<x STRING, y ARRAY<DATE>>: # {type_kind="STRUCT", # struct_type={fields=[ # {name="x", type={type_kind="STRING"}}, # {name="y", type={type_kind="ARRAY", array_element_type="DATE"}} # ]}} "structType": { # The fields of this struct, in order, if type_kind = "STRUCT". "fields": [ # Object with schema name: StandardSqlField ], }, "arrayElementType": # Object with schema name: StandardSqlDataType # The type of the array's elements, if type_kind = "ARRAY". "typeKind": "A String", # Required. The top level type of this field. # Can be any standard SQL data type (e.g., "INT64", "DATE", "ARRAY"). }, "argumentKind": "A String", # Optional. Defaults to FIXED_TYPE. "name": "A String", # Optional. The name of this argument. Can be absent for function return argument. "mode": "A String", # Optional. Specifies whether the argument is input or output. # Can be set for procedures only. }, ], }
list(projectId=*, datasetId=*, filter=None, pageToken=None, maxResults=None, readMask=None)
Lists all routines in the specified dataset. Requires the READER dataset role. Args: projectId: string, Required. Project ID of the routines to list (required) datasetId: string, Required. Dataset ID of the routines to list (required) filter: string, If set, then only the Routines matching this filter are returned. The current supported form is either "routine_type:<RoutineType>" or "routineType:<RoutineType>", where <RoutineType> is a RoutineType enum. Example: "routineType:SCALAR_FUNCTION". pageToken: string, Page token, returned by a previous call, to request the next page of results maxResults: integer, The maximum number of results to return in a single response page. Leverage the page tokens to iterate through the entire collection. readMask: string, If set, then only the Routine fields in the field mask, as well as project_id, dataset_id and routine_id, are returned in the response. If unset, then the following Routine fields are returned: etag, project_id, dataset_id, routine_id, routine_type, creation_time, last_modified_time, and language. Returns: An object of the form: { "nextPageToken": "A String", # A token to request the next page of results. "routines": [ # Routines in the requested dataset. Unless read_mask is set in the request, # only the following fields are populated: # etag, project_id, dataset_id, routine_id, routine_type, creation_time, # last_modified_time, and language. { # A user-defined function or a stored procedure. "routineType": "A String", # Required. The type of routine. "description": "A String", # Optional. [Experimental] The description of the routine if defined. "language": "A String", # Optional. Defaults to "SQL". "importedLibraries": [ # Optional. If language = "JAVASCRIPT", this field stores the path of the # imported JAVASCRIPT libraries. "A String", ], "creationTime": "A String", # Output only. The time when this routine was created, in milliseconds since # the epoch. "routineReference": { # Required. Reference describing the ID of this routine. "projectId": "A String", # [Required] The ID of the project containing this routine. "routineId": "A String", # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters. "datasetId": "A String", # [Required] The ID of the dataset containing this routine. }, "etag": "A String", # Output only. A hash of this resource. "definitionBody": "A String", # Required. The body of the routine. # # For functions, this is the expression in the AS clause. # # If language=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). # # If language=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. "returnType": { # The type of a variable, e.g., a function argument. # Optional if language = "SQL"; required otherwise. # # If absent, the return type is inferred from definition_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 return_type is `{type_kind: "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. # Examples: # INT64: {type_kind="INT64"} # ARRAY<STRING>: {type_kind="ARRAY", array_element_type="STRING"} # STRUCT<x STRING, y ARRAY<DATE>>: # {type_kind="STRUCT", # struct_type={fields=[ # {name="x", type={type_kind="STRING"}}, # {name="y", type={type_kind="ARRAY", array_element_type="DATE"}} # ]}} "structType": { # The fields of this struct, in order, if type_kind = "STRUCT". "fields": [ # Object with schema name: StandardSqlField ], }, "arrayElementType": # Object with schema name: StandardSqlDataType # The type of the array's elements, if type_kind = "ARRAY". "typeKind": "A String", # Required. The top level type of this field. # Can be any standard SQL data type (e.g., "INT64", "DATE", "ARRAY"). }, "lastModifiedTime": "A String", # Output only. The time when this routine was last modified, in milliseconds # since the epoch. "arguments": [ # Optional. { # Input/output argument of a function or a stored procedure. "dataType": { # The type of a variable, e.g., a function argument. # Required unless argument_kind = ANY_TYPE. # Examples: # INT64: {type_kind="INT64"} # ARRAY<STRING>: {type_kind="ARRAY", array_element_type="STRING"} # STRUCT<x STRING, y ARRAY<DATE>>: # {type_kind="STRUCT", # struct_type={fields=[ # {name="x", type={type_kind="STRING"}}, # {name="y", type={type_kind="ARRAY", array_element_type="DATE"}} # ]}} "structType": { # The fields of this struct, in order, if type_kind = "STRUCT". "fields": [ # Object with schema name: StandardSqlField ], }, "arrayElementType": # Object with schema name: StandardSqlDataType # The type of the array's elements, if type_kind = "ARRAY". "typeKind": "A String", # Required. The top level type of this field. # Can be any standard SQL data type (e.g., "INT64", "DATE", "ARRAY"). }, "argumentKind": "A String", # Optional. Defaults to FIXED_TYPE. "name": "A String", # Optional. The name of this argument. Can be absent for function return argument. "mode": "A String", # Optional. Specifies whether the argument is input or output. # Can be set for procedures only. }, ], }, ], }
list_next(previous_request=*, previous_response=*)
Retrieves the next page of results. Args: previous_request: The request for the previous page. (required) previous_response: The response from the request for the previous page. (required) Returns: A request object that you can call 'execute()' on to request the next page. Returns None if there are no more items in the collection.
update(projectId=*, datasetId=*, routineId=*, body=None)
Updates information in an existing routine. The update method replaces the entire Routine resource. Args: projectId: string, Required. Project ID of the routine to update (required) datasetId: string, Required. Dataset ID of the routine to update (required) routineId: string, Required. Routine ID of the routine to update (required) body: object, The request body. The object takes the form of: { # A user-defined function or a stored procedure. "routineType": "A String", # Required. The type of routine. "description": "A String", # Optional. [Experimental] The description of the routine if defined. "language": "A String", # Optional. Defaults to "SQL". "importedLibraries": [ # Optional. If language = "JAVASCRIPT", this field stores the path of the # imported JAVASCRIPT libraries. "A String", ], "creationTime": "A String", # Output only. The time when this routine was created, in milliseconds since # the epoch. "routineReference": { # Required. Reference describing the ID of this routine. "projectId": "A String", # [Required] The ID of the project containing this routine. "routineId": "A String", # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters. "datasetId": "A String", # [Required] The ID of the dataset containing this routine. }, "etag": "A String", # Output only. A hash of this resource. "definitionBody": "A String", # Required. The body of the routine. # # For functions, this is the expression in the AS clause. # # If language=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). # # If language=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. "returnType": { # The type of a variable, e.g., a function argument. # Optional if language = "SQL"; required otherwise. # # If absent, the return type is inferred from definition_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 return_type is `{type_kind: "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. # Examples: # INT64: {type_kind="INT64"} # ARRAY<STRING>: {type_kind="ARRAY", array_element_type="STRING"} # STRUCT<x STRING, y ARRAY<DATE>>: # {type_kind="STRUCT", # struct_type={fields=[ # {name="x", type={type_kind="STRING"}}, # {name="y", type={type_kind="ARRAY", array_element_type="DATE"}} # ]}} "structType": { # The fields of this struct, in order, if type_kind = "STRUCT". "fields": [ # Object with schema name: StandardSqlField ], }, "arrayElementType": # Object with schema name: StandardSqlDataType # The type of the array's elements, if type_kind = "ARRAY". "typeKind": "A String", # Required. The top level type of this field. # Can be any standard SQL data type (e.g., "INT64", "DATE", "ARRAY"). }, "lastModifiedTime": "A String", # Output only. The time when this routine was last modified, in milliseconds # since the epoch. "arguments": [ # Optional. { # Input/output argument of a function or a stored procedure. "dataType": { # The type of a variable, e.g., a function argument. # Required unless argument_kind = ANY_TYPE. # Examples: # INT64: {type_kind="INT64"} # ARRAY<STRING>: {type_kind="ARRAY", array_element_type="STRING"} # STRUCT<x STRING, y ARRAY<DATE>>: # {type_kind="STRUCT", # struct_type={fields=[ # {name="x", type={type_kind="STRING"}}, # {name="y", type={type_kind="ARRAY", array_element_type="DATE"}} # ]}} "structType": { # The fields of this struct, in order, if type_kind = "STRUCT". "fields": [ # Object with schema name: StandardSqlField ], }, "arrayElementType": # Object with schema name: StandardSqlDataType # The type of the array's elements, if type_kind = "ARRAY". "typeKind": "A String", # Required. The top level type of this field. # Can be any standard SQL data type (e.g., "INT64", "DATE", "ARRAY"). }, "argumentKind": "A String", # Optional. Defaults to FIXED_TYPE. "name": "A String", # Optional. The name of this argument. Can be absent for function return argument. "mode": "A String", # Optional. Specifies whether the argument is input or output. # Can be set for procedures only. }, ], } Returns: An object of the form: { # A user-defined function or a stored procedure. "routineType": "A String", # Required. The type of routine. "description": "A String", # Optional. [Experimental] The description of the routine if defined. "language": "A String", # Optional. Defaults to "SQL". "importedLibraries": [ # Optional. If language = "JAVASCRIPT", this field stores the path of the # imported JAVASCRIPT libraries. "A String", ], "creationTime": "A String", # Output only. The time when this routine was created, in milliseconds since # the epoch. "routineReference": { # Required. Reference describing the ID of this routine. "projectId": "A String", # [Required] The ID of the project containing this routine. "routineId": "A String", # [Required] The ID of the routine. The ID must contain only letters (a-z, A-Z), numbers (0-9), or underscores (_). The maximum length is 256 characters. "datasetId": "A String", # [Required] The ID of the dataset containing this routine. }, "etag": "A String", # Output only. A hash of this resource. "definitionBody": "A String", # Required. The body of the routine. # # For functions, this is the expression in the AS clause. # # If language=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). # # If language=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. "returnType": { # The type of a variable, e.g., a function argument. # Optional if language = "SQL"; required otherwise. # # If absent, the return type is inferred from definition_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 return_type is `{type_kind: "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. # Examples: # INT64: {type_kind="INT64"} # ARRAY<STRING>: {type_kind="ARRAY", array_element_type="STRING"} # STRUCT<x STRING, y ARRAY<DATE>>: # {type_kind="STRUCT", # struct_type={fields=[ # {name="x", type={type_kind="STRING"}}, # {name="y", type={type_kind="ARRAY", array_element_type="DATE"}} # ]}} "structType": { # The fields of this struct, in order, if type_kind = "STRUCT". "fields": [ # Object with schema name: StandardSqlField ], }, "arrayElementType": # Object with schema name: StandardSqlDataType # The type of the array's elements, if type_kind = "ARRAY". "typeKind": "A String", # Required. The top level type of this field. # Can be any standard SQL data type (e.g., "INT64", "DATE", "ARRAY"). }, "lastModifiedTime": "A String", # Output only. The time when this routine was last modified, in milliseconds # since the epoch. "arguments": [ # Optional. { # Input/output argument of a function or a stored procedure. "dataType": { # The type of a variable, e.g., a function argument. # Required unless argument_kind = ANY_TYPE. # Examples: # INT64: {type_kind="INT64"} # ARRAY<STRING>: {type_kind="ARRAY", array_element_type="STRING"} # STRUCT<x STRING, y ARRAY<DATE>>: # {type_kind="STRUCT", # struct_type={fields=[ # {name="x", type={type_kind="STRING"}}, # {name="y", type={type_kind="ARRAY", array_element_type="DATE"}} # ]}} "structType": { # The fields of this struct, in order, if type_kind = "STRUCT". "fields": [ # Object with schema name: StandardSqlField ], }, "arrayElementType": # Object with schema name: StandardSqlDataType # The type of the array's elements, if type_kind = "ARRAY". "typeKind": "A String", # Required. The top level type of this field. # Can be any standard SQL data type (e.g., "INT64", "DATE", "ARRAY"). }, "argumentKind": "A String", # Optional. Defaults to FIXED_TYPE. "name": "A String", # Optional. The name of this argument. Can be absent for function return argument. "mode": "A String", # Optional. Specifies whether the argument is input or output. # Can be set for procedures only. }, ], }