PySpark如何为DataFrame添加固定值列?SQL转PySpark实现求助
在PySpark中添加固定值列的实现方案
方法1:使用lit()函数(官方推荐)
PySpark中的lit()函数专门用于生成包含常量值的列,是实现固定值列的标准方式。
对应你的PL/SQL需求的示例:
如果要在现有empDF中保留原列并添加固定值列:
from pyspark.sql.functions import lit # 保留name列,同时添加值为1的column1、值为2的column2 empDF.select( "name", lit(1).alias("column1"), lit(2).alias("column2") ).display()
如果要创建类似FROM dual的空数据集并生成固定值列:
from pyspark.sql import SparkSession from pyspark.sql.functions import lit spark = SparkSession.builder.getOrCreate() # 创建空数据集,添加固定值列 spark.range(0).select( lit(1).alias("column1"), lit(2).alias("column2") ).display()
方法2:使用selectExpr()(贴近SQL语法)
如果你更习惯SQL写法,可以直接用selectExpr()编写类SQL表达式,和你的PL/SQL代码风格更接近:
示例代码:
# 在现有empDF上添加固定值列 empDF.selectExpr( "name", "1 AS column1", "2 AS column2" ).display() # 创建空数据集生成固定值列 spark.range(0).selectExpr( "1 AS column1", "2 AS column2" ).display()
关于你尝试代码的说明
你之前写的col("").alias("nullColumn")是生成空列的写法,和添加固定值列的需求不符,替换成上面两种方法即可实现你要的PL/SQL等效效果。
内容的提问来源于stack exchange,提问作者mody617
相关产品推荐
相关产品推荐

