Использовать строковую переменную, содержащую выражение в selectExpr dataframe - PullRequest
0 голосов
/ 06 сентября 2018

У меня возникают проблемы при попытке использовать переменную, содержащую мое выражение в selectExpr кадра данных.

Итак, моя переменная имеет вид:

expression = '"substr(value,1,1) as qffffffffbf3ef0cf","substr(value,2,1) as q6a0aaf20"'

И пытается использовать это в кадре данных как:

ascii_df.selectExpr(expression).show(1)

Однако я продолжаю получать несоответствующую ошибку ввода. Если я вставлю выражение прямо следующим образом, оно будет работать:

ascii_df.selectExpr("substr(value,1,1) as qffffffffbf3ef0cf","substr(value,2,1) as q6a0aaf20").show(1)

Есть ли способ сделать это в PySpark?

1 Ответ

0 голосов
/ 06 сентября 2018

Вы на самом деле используете два отдельных выражения. Используя их непосредственно в selectExpr, вы используете выражения как два отдельных аргумента для selectExpr:

selectExpr("substr(value,1,1) as qffffffffbf3ef0cf","substr(value,2,1) as q6a0aaf20")

Однако expression - это одна строка, поэтому она не будет работать. Вместо этого измените его на:

expressions = ["substr(value,1,1) as qffffffffbf3ef0cf","substr(value,2,1) as q6a0aaf20"]
ascii_df.selectExpr(expressions).show(1)
...