Я использую Cassandra 2.2, и у меня проблема с пользовательскими функциями.Cassandra UDF и пользовательский ввод
Я хочу создать функцию, принимать в качестве параметра целочисленный столбец таблицы и другое целое число в качестве входных данных пользователя и mutiply два значения следующим образом:
CREATE OR REPLACE FUNCTION testFunc (валь междунар, вход ИНТ)
ПРИЗВАЛ NULL INPUT вОЗВРАЩЕНИЯ INT
ЯЗЫК Java AS 'возврата VAL * ввода;';
можно выполнить функцию на два целочисленных столбце, как
выберите testFunc (int_column, another_int_column) от my_table;
и он работает, но когда я пытаюсь выполнить его с помощью пользовательского ввода, как:
выберите testFunc (int_column, 3) от my_table;
я получать следующие исключения:
SyntaxException: ErrorMessage код = 2000 [Синтаксическая ошибка в запросе CQL] сообщение = "линия 1:22 нет жизнеспособной альтернативы на входе '3' (выберите testFunc (год , [3] ...)»
можно ли добиться того, что я пытаюсь, или я должен найти другой способ сделать это?
спасибо за ваш ответ. Я искал что-то, что может измениться при каждом вызове, например, один раз вызвать функцию, чтобы умножить на 3, один раз умножить на 5 и так далее, в зависимости от потребностей пользователя, без необходимости писать функцию для каждого дело. – drstein
В этом случае (например, множитель переменной) обрабатывает его на уровне приложения. Я не думаю, что CQL предоставляет такое средство. Если вы хотите, чтобы SPARK-SQL мог работать в этом сценарии. –