条件求值bigquery udf

zpqajqem  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(428)

我将一些值传递给udf并检查它们是否在一个范围内,我也传递这个范围。我的两个参数:p5->1,p10->2。我在整数列上应用这个函数。我从下面的片段中得到了一个奇怪的结果:

(INPUT > P5 && INPUT <= P10)

输入:117
第5页:1
p10:2页
返回:true(以上值均直接输出确认)
因此,我尝试使用以下参数:

(INPUT > 1 && INPUT <= 2)

输入:117
返回:false
完整代码:

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

作为

vddsk6oq

vddsk6oq1#

您遇到的问题是,不支持将int64作为javascript UDF的输入类型。所以你的输入值被当作字符串来处理,这会导致你看到的结果
相反,使用float64将整数值表示为数字
因此,您的自定义项应如下所示

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
}
""";

相关问题