我正在使用持久化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。由逗号分隔的param_name和param_type对。 param_type的值是BigQuery数据类型。对于SQL UDF,param_type的值也可以是ANY TYPE。
因此,很可能会说不幸的是,当在BigQuery
中使用UDF时,这是不可能的。
如果您需要进一步的帮助,请告诉我。