1、rollup()分层聚合方法 -实践1
#in python
from pyspark.sql.functions import count,min,max,avg,var_pop,stddev_pop,countDistinct
df.rollup("code")\
.agg(countDistinct("user_id").alias("user_cnt"))\
.select("code","user_cnt")\
.orderBy("code")\
.show(200)
输出结果:
(1)第一行,code是null,这是对所有 user_id的统计
(2)第二行之后,code不是null,这是对按照code分组后的user_id的统计

2、rollup()分层聚合方法 -实践2
#in python
from pyspark.sql.functions import countDistinct
from pyspark.sql.functions import desc
df.rollup("code1","code2")\
.agg(countDistinct("user_id").alias("user_cnt"),
countDistinct("sku").alias("sku_cnt"))\
.orderBy(desc("code1"),"code2")\
.show(200)
输出结果:因为排序的关系,可以看到 总共有2层的 层次分组
(1)第一层层次是对全部数据的统计
(2)第二层层次是固定code1下的分层统计

本文介绍了使用PySpark实现的rollup()分层聚合方法的两个实战案例。第一个案例展示了如何按code字段对user_id进行分组并计算不同层级的唯一用户数;第二个案例则进一步演示了同时按code1和code2字段分组,并统计每组内的不同user_id和sku数量,通过降序排列清晰展示多层级分组统计结果。

280

被折叠的 条评论
为什么被折叠?



