我将一些值传递给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
作为
1条答案
按热度按时间vddsk6oq1#
您遇到的问题是,不支持将int64作为javascript UDF的输入类型。所以你的输入值被当作字符串来处理,这会导致你看到的结果
相反,使用float64将整数值表示为数字
因此,您的自定义项应如下所示