Databricks PySpark分组聚合后无法正确设置Result列别名问题求助
PySpark聚合列别名失效问题排查与修正
问题原因
你没有对聚合计算表达式显式指定列别名,PySpark默认会将完整的计算字符串作为列名返回,而非你期望的Result。
修正后的代码
from pyspark.sql import functions as F # 分组聚合并指定结果列别名 result_df = df.groupBy("Id", "date", "Hour", "QtrHour", "Time", "Source") \ .agg( (F.sum("Percentage_Length") / (F.sum("Percentage_Length") / F.sum(F.col("AvgSpeed") * F.col("Percentage_Length")))) .alias("Result") ) # 查看结果 result_df.show()
额外优化提示
你的计算表达式可以简化:sum(Percentage_Length) / (sum(Percentage_Length) / sum(AvgSpeed * Percentage_Length)) 等价于 sum(AvgSpeed * Percentage_Length),简化后代码更高效:
result_df = df.groupBy("Id", "date", "Hour", "QtrHour", "Time", "Source") \ .agg(F.sum(F.col("AvgSpeed") * F.col("Percentage_Length")).alias("Result"))
内容的提问来源于stack exchange,提问作者Snowy
相关产品推荐
相关产品推荐

