为啥 lit() 函数在 selectExpr() 中不起作用?
Posted
技术标签:
【中文标题】为啥 lit() 函数在 selectExpr() 中不起作用?【英文标题】:why doesn't lit() function work in selectExpr()?为什么 lit() 函数在 selectExpr() 中不起作用? 【发布时间】:2021-01-06 10:58:49 【问题描述】:df.selectExpr(func.lit(20)).show()
df.selectExpr("func.lit(20)").show()
抛出错误:
raise TypeError("Column is not iterable")
TypeError: Column is not iterable
【问题讨论】:
【参考方案1】:你应该使用
df.select(func.lit(20))
或
df.selectExpr("20")
selectExpr
需要一个可以选择的原始 SQL 字符串,而 select
需要一个 column
对象,例如 func.lit(20)
,或作为字符串的列名。
column
s 不应用于selectExpr
。
【讨论】:
感谢您的回答。但是 selectExpr() 如何与 count(colname) 一起正常工作?例如:df.selectExpr("count(age)").show() @JPS 因为count
是可以在 SQL 查询字符串中使用的有效 SQL 函数。以上是关于为啥 lit() 函数在 selectExpr() 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
如何将列表传递给pyspark中的selectExpr方法?
如何在 apache spark 中同时使用 dataset.select 和 selectExpr