首页 > 解决方案 > 是否可以从字符串构造 PySpark 语句?

问题描述

考虑

from pyspark.sql import functions as F

statement = F.when(F.col("col1") < 0.5, F.lit(0.5))

str_statement = str(statement) 

产量

"Column<'CASE WHEN (col1 < 0.5) THEN 0.5 END'>"

是否可以采用这样的字符串而不编写自定义解析器重新创建statement

标签: pyspark

解决方案


字符串的 sql 部分可用作expr的参数以重新创建原始列对象。

str_statement = "Column<'CASE WHEN (col1 < 0.5) THEN 0.5 END'>"

import re
sql_expr = re.search("Column<'(.*)'>", str_statement).group(1)

from pyspark.sql import functions as F
statement = F.expr(sql_expr)

推荐阅读