Google Big Query中的功能

时间:2019-03-15 10:14:35

标签: google-bigquery

我正在尝试在Google Biq查询中创建一个函数,但出现以下错误。任何帮助表示赞赏:

b

2 个答案:

答案 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)