我正在使用Cassandra 2.2,我遇到了用户定义函数的问题。
我想创建一个函数,它将一个表的整数列作为参数,另一个整数作为用户输入,并将这两个值多显示如下:
创建或替换函数testFunc(val int,input int)
调用NULL INPUT RETURNS int
LANGUAGE java AS'返回val *输入;';
我可以在两个整数列上执行该函数,如
从my_table中选择testFunc(int_column,another_int_column);
并且它正在工作,但当我尝试使用用户输入执行它时:
从my_table中选择testFunc(int_column,3);
我收到以下例外:
SyntaxException:ErrorMessage code = 2000 [CQL查询中的语法错误] message =“第1:22行在输入'3'处没有可行的选择(选择testFunc(year,[3] ...)”
是否有可能实现我正在尝试的目标,或者我应该找到另一种方法来实现它?
答案 0 :(得分:1)
以这种方式调用UDF masked_array(data =
[[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]
...,
[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]
[-- -- -- ..., -- -- --]],
mask =
[[ True True True ..., True True True]
[ True True True ..., True True True]
[ True True True ..., True True True]
...,
[ True True True ..., True True True]
[ True True True ..., True True True]
[ True True True ..., True True True]],
fill_value = 65536.0)
与将testFunc(int_column, 3)
传递给只接受int
(即列名)的函数参数相同,因此语法错误{{1} }}。不确定这是否适合您的场景,但您可以尝试这样的事情:
String
或者在表格中添加no viable alternative at input '3'
列。