在数据框的 selectExpr 中使用包含表达式的字符串变量

Use string variable containing expression in selectExpr of dataframe

我在尝试在数据帧的 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 中有没有办法做到这一点?

您实际上使用了两个不同的表达式。在 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)