目錄
指定多種聚合的維度、層次,對多個group by + union all進行替換、簡化
可實現從右到左遞減多級的統計,顯示統計某一層次結構的聚合
可以實現多個任意維度的查詢,會統計所選列中值的所有組合的聚合
按照一定規則給統計的各維度組合打標,並返回標識值。
1. group by擴充套件——grouping sets
簡要說明:在乙個 group by 查詢中,根據不同的維度組合進行聚合,等價於將不同維度的 group by 結果集進行 union all。
樣例hive-sql:
select
col1,
col2,
col3 ,
sum(income) as income,
count(distinct user_id) as user_qtty
from
dw.table_name
where
month_id = '201912'
group by
col1,
col2,
col3
grouping sets(col1,(col1,col2),(col1,col2,col3));
執行結果展示:
col1
col2
col3
income
user_qtty
54331
null
null
7217.6
8454331
1null
182.1
654331
4null
1047.5
954331
5null
1668.5
1754331
12901421
54331
12809
106.6
354331
4132331
54331
4133331
54331
5239
1122
54331
5248
1149
42. group by擴充套件——grouping__id
簡要說明:grouping sets會把在單個group by邏輯中沒有參與group by的那一列置為null值。
如果這一列原本就有null值的資料,會造成歧義,可以使用grouping__id函式解決。
grouping__id表示結果屬於哪乙個分組集合。
樣例hive-sql:
select
col1,
col2,
col3 ,
sum(income) as income,
count(distinct user_id) as user_qtty ,
grouping__id
from
dw.table_name
where
month_id='201912'
group by
col1,
col2,
col3
grouping sets(col1,(col1,col2),(col1,col2,col3))
3. group by擴充套件——with rollup
簡要說明:rullup函式是cube的子集,以最左側維度為主,按照順序依次進行聚合.
樣例hive-sql:
select
col1 ,
col2 ,
col3 ,
sum(income) as income,
sum(item_qtty) as item_qtty ,
grouping__id
from
dw.table_name
where
month_id='201912'
group by
col1 ,
col2,
col3
with rollup
這裡,with rollup 等價於
grouping sets((),
col1,
(col1,col2),
(col1,col3) ,
(col1,col2,col3)
4. group by擴充套件——with cube
簡要說明:cube函式,可以實現多個任意維度的查詢
cube(a,b,c)則首先會對(a,b,c)進行group by,
然後依次是(a,b),(a,c),(a),(b,c),(b),(c),最後在對全表進行group by,他會統計所選列中值的所有組合的聚合
用cube函式就可以完成所有維度的聚合工作.
樣例hive-sql:
select
col1,
col2,
col3,
col4,
col5,
sum(income) as income,
count(distinct user_id) as user_qtty ,
grouping__id
from
dw.tablename
where
month_id='201912'
group by
col1 ,
col2 ,
col3 ,
col4 ,
col5
with cube 注:
hive.new.job.grouping.set.cardinality 配置:
例如:set hive.new.job.grouping.set.cardinality = 2048;
使用場景:當使用增強聚合函式,有取distinct去重的聚合指標,且要彙總的維度組合數大於等於32時,需要設定此引數;
引數配置:這個引數須大於等於grouping sets(with rollup、with cube)後面要計算的維度組合個數。
Hive高階聚合函式
0 基礎知識 1 pv page view 頁面訪問量 2 uv user view 訪問人數 3 uv表的資料如下 4 統計每個月的使用者瀏覽量,distinct 關鍵字是去除重複的值 select month,count distinct id from uv group by month 1 ...
Hive高階聚合函式
基礎知識 1 pv page view 頁面訪問量 2 uv user view 訪問人數 3 uv表的資料如下 4 統計每個月的使用者瀏覽量,distinct 關鍵字是去除重複的值 select month,count distinct id from uv group by month 1 un...
Hive 聚合函式
用途 計算總體標準差 格式 t stddev t,t,t,用途 計算樣本標準差 格式 t stddev samp t,t,t,用途 返回組內某個數字列的方差 介面格式 double variance column name 用途 返回組內某個數字列的方差 介面格式 double var pop co...