[英]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.