gpt4 book ai didi

google-bigquery - 如何在 BigQuery UDF 体内声明变量?

转载 作者:行者123 更新时间:2023-12-05 05:00:15 27 4
gpt4 key购买 nike

我正在尝试在 BigQuery 上创建一个带有 while 循环的 UDF 函数,但我没有在文档中看到任何语法指南,它专门针对这种情况,也没有解决 UDF 主体中的变量声明。

上下文:我正在尝试构建一个将标题大小写应用于字符串的函数。

我试过:

CREATE CREATE OR REPLACE FUNCTION mydataset.title_case(word STRING) as (
DECLARE i INT64;
SET i = ARRAY_LENGTH(SPLIT(word, " "));
...
);

但是它不喜欢 UDF 主体中的 DECLARE 或 SET。正确的语法是什么?

最佳答案

关于您关于如何使用 DECLARE 的问题和 SETUDF 中,您必须在代码的开头声明和设置变量。然后,您将它作为参数传递给您的 UDF,语法为;

DECLARE x ARRAY <String>; 
SET x = (SELECT ARRAY_LENGTH(SPLIT(word, " ")) FROM `project_id.dataset.table`);

CREATE CREATE OR REPLACE FUNCTION mydataset.title_case(word STRING, x INT64) as (
#your function...
);

请注意,变量是根据表中的值设置的,使用 SELECT。此外,它作为参数传递给 UDF

此外,我还能够创建一个 JavaScript UDF 来将标题大小写应用到字符串,而无需 SET 和 DECLARE。我只使用过 JS 的内置方法。您可以按如下方式使用它:

CREATE TEMP FUNCTION title_case(str String)
RETURNS string
LANGUAGE js AS """
str = str.split(' ');
for(var i = 0; i < str.length; i++){
str[i] = str[i].charAt(0).toUpperCase() + str[i].slice(1);
}
return str.join(' ');
""";

WITH data AS (
SELECT "jack sparrow" AS name
)

SELECT title_case(name) as new_name FROM data

和输出,

Row new_name    
1 Jack Sparrow

关于google-bigquery - 如何在 BigQuery UDF 体内声明变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63147752/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com