Cassandra UDF和用户输入

时间:2016-02-09 10:37:55

标签: cassandra cql udf

我正在使用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] ...)”

是否有可能实现我正在尝试的目标,或者我应该找到另一种方法来实现它?

1 个答案:

答案 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'列。