为啥 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),或作为字符串的列名。

columns 不应用于selectExpr

【讨论】:

感谢您的回答。但是 selectExpr() 如何与 count(colname) 一起正常工作?例如:df.selectExpr("count(age)").show() @JPS 因为count 是可以在 SQL 查询字符串中使用的有效 SQL 函数。

以上是关于为啥 lit() 函数在 selectExpr() 中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

如何将列表传递给pyspark中的selectExpr方法?

如何在 apache spark 中同时使用 dataset.select 和 selectExpr

unity urp内置lit材质源码解析(下)

信号与系统02 - 傅里叶变换

spark中的lit()有啥用?下面的两段代码返回相同的输出,使用 lit() 有啥好处 [重复]

使用带有 lit-html 的打字稿编写测试时出现“语法错误:无法在模块外使用 import 语句”