Программно создать новый столбец, анализируя выражение в Scala Spark - PullRequest
0 голосов
/ 19 декабря 2018
var c1 = "column1"
var c2 = "column2"
var c3 = "column3"
var exprs = "c1*c2+c3"

var df2 = df.withColumn("target_col",expr(exprs))

, где c1, c2, c3 - столбцы в df

. Этот код выдает ошибку - есть ли способ сделать это?exprs могут измениться.

Ответы [ 2 ]

0 голосов
/ 19 декабря 2018

Вы получаете ошибку, потому что при инициализации exprs вместо использования значений c1,c2,c3 вы создаете новую строку c1*c2+c3.Поскольку столбец c1*c2+c3 не существует, следовательно, ошибка.Вы можете использовать строковую интерполяцию для построения exprs

val exprs = s"$c1*$c2+$c3"

И затем использовать это выражение в withColumn.

val df = df.withColumn("target_col",expr(exprs)).

Я бы также предложил вамиспользуйте val вместо или var.

0 голосов
/ 19 декабря 2018

Чтобы сделать это возможным, вам нужно использовать строковую интерполяцию следующим образом:

val c1 = "column1"
val c2 = "column2"
val c3 = "column3"
val exprs = s"$c1*$c2+$c3"

val df2 = df.withColumn("target_col",expr(exprs))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...