agg函数需要输入一个(Column, Seq(Column))元组来进行聚合操作。其中第一个元素表示要聚合的列,第二个元素则表示要进行的聚合操作。
例如,在以下示例中,我们想要计算不同地区的销售总额,平均价格和最高价格:
import pyspark.sql.functions as F
from pyspark.sql.types import IntegerType
data = [("A", 100, 10),
("A", 200, 20),
("B", 300, 30),
("B", 400, 40)]
df = spark.createDataFrame(data, schema=["region", "sales", "price"])
df.groupBy("region").agg(
F.sum("sales").alias("total_sales"),
F.avg("price").alias("avg_price"),
F.max("price").alias("max_price")
).show()
输出:
+------+-----------+---------+--------+
|region|total_sales|avg_price|max_price|
+------+-----------+---------+--------+
| B| 700| 35.0| 40|
| A| 300| 15.0| 20|
+------+-----------+---------+--------+
在这个例子中,我们首先对“region”列进行分组,然后使用agg函数进行聚合操作。其中,我们使用了sum、avg和max函数来分别计算总销售额、平均价格和最高价格。我们将这些聚合操作的结果使用alias函数进行重命名,最终得到了按地区分组的聚合结果。