Я использую SQL операторы в качестве ввода от пользователей что-то вроде "CASE WHEN CALL_UDF("12G", 2) < 0 THEN 4 ELSE 5 END
".
Я бы хотел добавить в эту строку дополнительный параметр. Ожидаемый результат: "CASE WHEN CALL_UDF("12G", 2, additional_parameter) < 0 THEN 4 ELSE 5 END
".
Для достижения этой цели я пытаюсь использовать SparkSqlParser
, но столкнулся с проблемами при реализации этой замены. Возможно, кто-то реализовал подобное решение. Спасибо.
Что я уже пробовал:
val expression = parser.parseExpression("CASE WHEN CALL_UDF("12G", 2) < 0 THEN 3 ELSE 4 END")
.transformDown {
case expression if expression.isInstanceOf[UnresolvedFunction] && expression.asInstanceOf[UnresolvedFunction].name.funcName == "CALL_UDF" =>
UnresolvedFunction(FunctionIdentifier("CALL_UDF"), expression.children.toList ++ Seq(parser.parseExpression("4")), false)
}