首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在SparkSQL DataFrame中像sql一样求和(Case when then)?

在SparkSQL DataFrame中,可以使用groupByagg函数来实现类似SQL中的求和操作,同时也可以使用whenotherwise函数实现类似SQL中的case when then语句。

以下是一个示例代码,展示了如何在SparkSQL DataFrame中使用groupByaggwhenotherwise函数来实现求和操作:

代码语言:txt
复制
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()

输出结果如下:

代码语言:txt
复制
+------+----------+
|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语句进行求和操作。

对于腾讯云相关产品和产品介绍链接地址,可以参考腾讯云官方文档进行查询和了解。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券