我正在尝试在Google Biq查询中创建一个函数,但出现以下错误。任何帮助表示赞赏:
b
答案 0 :(得分:2)
您可以将其用作CREATE函数语句
CREATE TEMP FUNCTION
test(ID FLOAT64)
AS (
CASE
WHEN CAST(FLOOR(ID/POWER(CAST(2 AS INT64),38)) AS INT64) & 3 = 0
THEN ID & CAST(12345678 AS INT64)
ELSE ID END);
注意:我从函数的主体中删除了SELECT
,并更正了函数签名,使其与定义的here匹配的BigQuery函数样式
答案 1 :(得分:1)
下面是您的函数的固定版本
#standardSQL
CREATE TEMP FUNCTION test(ID INT64)
RETURNS INT64 AS ((
SELECT CASE
WHEN CAST(FLOOR(ID/POWER(CAST(2 AS INT64),38)) AS INT64) & 3 = 0
THEN ID & CAST(12345678 AS INT64)
ELSE ID
END
));
SELECT test(12)
如您所见-您缺少它的某些方面,例如TEMP
关键字,一些左括号和右括号等
同时,就像在您这样的简单场景中一样-您可以省略SELECT
的使用,而仅使用表达式,如下面的示例所示(请注意,在这种情况下,您也无需使用多余的左/右括号
#standardSQL
CREATE TEMP FUNCTION test(ID INT64)
RETURNS INT64 AS (
CASE
WHEN CAST(FLOOR(ID/POWER(CAST(2 AS INT64),38)) AS INT64) & 3 = 0
THEN ID & CAST(12345678 AS INT64)
ELSE ID
END
);
SELECT test(12)