如何在PySpark中重命名SQL查询生成的默认列名?
PySpark SQL列重命名解决方法
直接去掉列名的单引号,合法标识符不需要引号包裹:
df = sql("select last_day(add_months(current_date(),-1)) as newname")如果列名包含特殊字符需要标识符包裹,用反引号(`)而非单引号:
df = sql("select last_day(add_months(current_date(),-1)) as `newname`")也可以在SQL执行后,用DataFrame的
withColumnRenamed方法重命名:df = sql("select last_day(add_months(current_date(),-1))") df = df.withColumnRenamed("last_day(add_months(current_date(), -1))", "newname")
你之前的写法失败是因为单引号在PySpark SQL里表示字符串字面量,而非列名标识符,相当于把计算结果替换成了字符串'newname',而非给列改名。
内容的提问来源于stack exchange,提问作者Patterson
相关产品推荐
相关产品推荐

