Синтаксический анализ условия ifelse для условий на фрейме данных pyspark - PullRequest
0 голосов
/ 01 мая 2020

Я создаю приложение, в котором пользователи могут динамически вводить операторы ifelse, и я должен применить эти условия соответственно к фрейму данных Spark. Базовая функция c ifelse определяется как

ifelse(boolean_expr, valTrue, valFalse)

, которую я читал из JSON как

[{ expression: boolean_expr , trueValue: valTrue , falseValue: valFalse }]

и должен писать в Spark как

df.withColumn("new_col", when(boolean_expr,valTrue)).otherwise(valFalse)

Все это хорошо, когда у меня простое и уникальное состояние. Однако, если есть одно или несколько вложенных условий, я не знаю, как продолжить синтаксический анализ содержимого JSON для вложенных условий в кадре данных. Например,

[{ expression: cond_1 , trueValue: { expression: cond_2, trueValue: "something", falseValue: "something_else"} , falseValue: "another_thing" }]

должен go к чему-то вроде

df.withColumn("new_col", when(cond_1, when(cond_2,"something").otherwise("something_else")).otherwise("another_thing")

или

[{ expression: cond_1 , trueValue: "something_true" , falseValue:  { expression: cond_2, trueValue: "something", falseValue: "something_else"} }]

должен go к чему-то вроде

df.withColumn("new_col", when(cond_1, "something_true")).otherwise(when(cond_2,"something").otherwise("something_else"))

но я понятия не имею, как приступить к синтаксическому анализу JSON во что-то, что может быть реализовано в Spark. Более того, я не знаю, как я могу динамически добавлять when-otherwise предложения в метод withcolum.

Пожалуйста, помогите мне решить эту проблему!

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...