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 我们可以看到对于 SQLJavaScript 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 时,这似乎是不可能的。

如果您需要任何进一步的帮助,请告诉我。