文章目录
- 二、多维聚合
一、groupBy() ---- 分组
- 按照列将DataSet分组,并返回一个RelatinalGroupedDataSet对象,然后通过该对象,对分组内容进行聚合操作
avg ---- 平均值
stddev ---- 方差
用GroupedDataset的API进行聚合
二、多维聚合
- 多维聚合就是将数据进行多次聚合最后将结果集合并,在一张表中呈现出多次聚合的结果
- 需求一:按照来源、年份分组求pm均值
- 需求二:按照来源分组求pm均值
- 合并数据集
- 在排序的时候如果含有空值设置排布。
1.rollup()
- rollup操作符就是groupBy的一个扩展,它会对传入的列进行滚动groupBy,groupBy的次数为列数量+1,最后一次是对整个数据集进行聚合,主要依据是第一个列。
案例:PM统计值多维聚合
变形:将每年作为主列,结果完全不同
模型:
rollup聚合不均衡,始终将第一个列作为主列进行分组。
2.cube()
- cube可以看成是对rollup的扩展。group by A,B,C with cube,则首先会对(A、B、C)进行group by,然后依次是(A、B),(A、C),(A),(B、C),(B),( C),最后对全表进行group by操作。
3.cubeSQL
- 使用SQL语句进行分组聚合,但是SQL中需要用到的是grouping set。grouping sets是group by子句更进一步的扩展, 它让你能够定义多个数据分组。这样做使聚合更容易, 并且因此使得多维数据分析更容易
- 结果与cube()的使用完全一致。
4.RelationalGroupedDataSet