问题描述
我知道有一个名为expr的函数可以将您的spark sql转换为带有该表达式的spark列:
>>> from pyspark.sql import functions as F
>>> F.expr("length(name)")
Column<b'length(name)'>
是否有相反的功能-将您的Column转换为pyspark的sql字符串?像这样:
>>> F.inverse_expr(F.length(F.col('name')))
'length(name)'
我发现Column的__repr__
可以使您了解列表达式的含义(像Column<b'length(name)'>
一样,但是如果没有一些笨拙的解析和字符串替换,它似乎无法在程序上使用。
解决方法
在scala中,我们可以使用column#expr
来获取如下所示的sql类型表达式-
length($"entities").expr.toString()
// length('entities)
在pyspark-
print(F.length("name")._jc.expr.container)
# length(name)