繁体   English   中英

条件评估 bigquery UDF

[英]Conditional evaluation bigquery UDF

我将一些值传递给 UDF 并检查它们是否在一个范围之间,我也通过了该范围。 我的两个参数:P5->1,P10->2。 我在 integer 的列上应用这个 function。 我从下面的这段代码中得到了一个奇怪的结果:

(INPUT > P5 && INPUT <= P10)

输入:117

P5:1

P10:2

返回:真(以上所有值均已通过直接输出得到确认)

所以我尝试使用参数:

(INPUT > 1 && INPUT <= 2)

输入:117

返回:错误

完整代码:

CREATE TEMP FUNCTION label2(INPUT INT64, P5 INT64, P10 INT64)
RETURNS STRING
LANGUAGE js
"""
if (INPUT > P5 && INPUT <= P10){
return 'B1'
}else{
return false
}
""";
SELECT A.COLUMN , LABEL2(A.COLUMN,1,2)
FROM ... AS A 

作为

您遇到的问题是因为不支持INT64 作为 JavaScript UDF 的输入类型。 因此,您的输入值被视为字符串,从而导致您看到的结果

相反,使用 FLOAT64 将 integer 值表示为数字

因此,您的 UDF 应如下所示

CREATE TEMP FUNCTION label2(INPUT FLOAT64, P5 FLOAT64, P10 FLOAT64)
RETURNS STRING
LANGUAGE js AS
"""
if (INPUT > P5 && INPUT <= P10){
  return 'B1'
} else {
  return false
}
""";    

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM