BigQuery:具有可选参数的持久UDF

问题描述 投票:0回答:1

我正在使用持久化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])

google-bigquery user-defined-functions optional-parameters
1个回答
1
投票

通过查看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_pa​​rameter。由逗号分隔的param_name和param_type对。 param_type的值是BigQuery数据类型。对于SQL UDF,param_type的值也可以是ANY TYPE。

因此,很可能会说不幸的是,当在BigQuery中使用UDF时,这是不可能的。

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

© www.soinside.com 2019 - 2024. All rights reserved.