BigQuery: постоянный UDF с необязательными параметрами - PullRequest
0 голосов
/ 17 февраля 2020

Я использую постоянные функции 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])

1 Ответ

2 голосов
/ 17 февраля 2020

Глядя на документацию , мы видим, что для UDF SQL и JavaScript этот тип структуры не указан.

В синтаксисе 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 также может быть ЛЮБОЙ ТИП.

Следовательно, можно сказать, что, к сожалению, это невозможно при использовании UDF в BigQuery.

Если вам нужна дополнительная помощь, пожалуйста, дайте мне знать.

...