學習 Hive(十二):分組集
分組集
分組集(Grouping Sets)實現了在一條 GROUP BY 語句多次 GROUP BY 操作。
SELECT a, b, SUM(c) FROM t1 GROUP BY a, b GROUPING SETS((a, b))
:point_up_2: 的 SQL 語句(a, b)
是一個分組集,其等價於
SELECT a, b, SUM(c) FROM t1 GROUP BY a, b
SELECT a, b, SUM(c) FROM t1 GROUP BY a, b GROUPING SETS(a, b)
:point_up_2: 的 SQL 語句a
和b
是兩個分組集,相當於將兩個 GROUP BY 通過 UIO/">NION 合併,其等價於:
SELECT a, null, SUM(c) FROM t1 GROUP BY a UNION SELECT null, b, SUM(c) FROM t1 GROUP BY b
ROLLUP
上卷(Roll Up)也是一類分組集,按著分組條件逐層上卷,例如:GROUP BY a, b, c WITH ROLLUP
相當於GROUP BY a, b, c GROUPING SETS((a, b, c), (a, b), (a), ())
CUBE
資料立方體(Cube)也是一類分組集,按著分組條件生成 2 的 n 次方種分組集組合,例如:GROUP BY a, b, c WITH CUBE
相當於GROUP BY a, b, c GROUPING SETS((a, b, c), (a, b), (a, c), (b, c), (a), (b), (c), ())
GROUPING FUNCTION
grouping
函式可以用於檢視分組集中的列是否參與了 GROUP BY 聚合,如果值為 0 則表示有,如果值為 1 則表示沒有。
參考
- Hive/Enhanced+Aggregation%2C+Cube%2C+Grouping+and+Rollup" rel="nofollow,noindex" target="_blank">Enhanced Aggregation, Cube, Grouping and Rollup
- Hive分析視窗函式(五) GROUPING SETS,GROUPING__ID,CUBE,ROLLUP