Spark Sql Parser добавляет дополнительный параметр в вызов UDF - PullRequest
1 голос
/ 25 февраля 2020

Я использую 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)
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...