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下的分层统计

 

 

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐