BigQuery:具有可选参数的持久性 UDF
BigQuery: Persistent UDF with optional parameters
我正在使用持久化 UDF 函数,但不确定如何使用可选参数(例如默认值)来实现它们。
例如一个简单的函数替换 NaN
:
CREATE OR REPLACE FUNCTION
`my_project.functions.ifnan`(number ANY TYPE, default_value ANY TYPE)
AS
(
if(is_nan(number),default_value,number)
);
如何让它像 ifnan(value)
一样工作,默认情况下返回 0
,并且仅当指定的其他默认值覆盖 0
时?
类似于ifnan(number [,default value])
查看 documentation 我们可以看到对于 SQL
和 JavaScript
UDF 都没有指定这种结构。
在 SQL 语法中:
CREATE [OR REPLACE] [TEMPORARY | TEMP] FUNCTION [IF NOT EXISTS]
[[`project_name`.]dataset_name.]function_name
([named_parameter[, ...]])
[RETURNS data_type]
AS (sql_expression)
named_parameter:
param_name param_type
在JavaScript语法中:
CREATE [OR REPLACE] [TEMPORARY | TEMP] FUNCTION [IF NOT EXISTS]
[[`project_name`.]dataset_name.]function_name
([named_parameter[, ...]])
RETURNS data_type
LANGUAGE js
[OPTIONS (library = library_array)]
AS javascript_code
除此之外,我们还可以找到如下语句:
named_parameter. Consists of a comma-separated param_name and
param_type pair. The value of param_type is a BigQuery data type. For
a SQL UDF, the value of param_type may also be ANY TYPE.
因此,不幸的是,在 BigQuery
中使用 UDF 时,这似乎是不可能的。
如果您需要任何进一步的帮助,请告诉我。
我正在使用持久化 UDF 函数,但不确定如何使用可选参数(例如默认值)来实现它们。
例如一个简单的函数替换 NaN
:
CREATE OR REPLACE FUNCTION
`my_project.functions.ifnan`(number ANY TYPE, default_value ANY TYPE)
AS
(
if(is_nan(number),default_value,number)
);
如何让它像 ifnan(value)
一样工作,默认情况下返回 0
,并且仅当指定的其他默认值覆盖 0
时?
类似于ifnan(number [,default value])
查看 documentation 我们可以看到对于 SQL
和 JavaScript
UDF 都没有指定这种结构。
在 SQL 语法中:
CREATE [OR REPLACE] [TEMPORARY | TEMP] FUNCTION [IF NOT EXISTS]
[[`project_name`.]dataset_name.]function_name
([named_parameter[, ...]])
[RETURNS data_type]
AS (sql_expression)
named_parameter:
param_name param_type
在JavaScript语法中:
CREATE [OR REPLACE] [TEMPORARY | TEMP] FUNCTION [IF NOT EXISTS]
[[`project_name`.]dataset_name.]function_name
([named_parameter[, ...]])
RETURNS data_type
LANGUAGE js
[OPTIONS (library = library_array)]
AS javascript_code
除此之外,我们还可以找到如下语句:
named_parameter. Consists of a comma-separated param_name and param_type pair. The value of param_type is a BigQuery data type. For a SQL UDF, the value of param_type may also be ANY TYPE.
因此,不幸的是,在 BigQuery
中使用 UDF 时,这似乎是不可能的。
如果您需要任何进一步的帮助,请告诉我。