hive分析函式

2021-09-02 15:10:49 字數 2007 閱讀 6934

遇到以下問題如何解決?

查詢客戶各個日期的歷史累積購買金額

查詢每個客戶第一次(首購)或前n次購買記錄

查詢每個客戶最後一次購買記錄

某活動推廣後,每天的累積資料

查詢客戶每天的歷史累積購買金額

hive 語法:

select

userid user_id,

pay_datekey pay_datekey,

pay_amount pay_amount,

sum(pay_amount) over (partition by userid order by pay_datekey rows betweenunbounded preceding and current row ) accumulate_pay_amount

from

order_table

over(partition by column rows between ..)

rows ((current row) | (unbounded | [num]) preceding) and (unbounded | [num]) following

preceding:往前

following:往後

current row:當前行

unbounded:起點,unbounded preceding 表示從前面的起點, unbounded

following:表示到後面的終點

如果不指定rows between,預設為從起點到當前值

sum(pay_amount) over (partition by userid order by pay_datekey rows between 2 preceding and 0 following)

除了可以計算到當前行的sum聚合函式之外,還支援以下 標準聚合函式

比如計算:截止某天歷史平均購買交易額、最小購買金額等。

為每一行加乙個序號

row_number()

rank()

dense_rank()

percent_rank() 分組內當前行的rank值-1/分組內總行數-1

ntile(n) 將資料集分成 n片,返回分片號

cume_dist 小於等於當前值的行數和分組內總行數的比值

效果

select 

user_id,

pay_datekey,

pay_amount,

row_number() over (partition by userid order by pay_datekey asc)

row_number,

rank() over (partition by userid order by pay_datekey asc) rank, dense_rank() over (partition by userid order by pay_datekey asc) dense_rank, percent_rank() over (partition by userid order by pay_datekey asc)

percent_rank,

ntile(2) over (partition by userid order by pay_datekey asc) ntile

from

order_detail

lag(col,n,default) 用於統計視窗內往上第n行值 第乙個引數為列名,第二個引數為往上第n行(可選,預設為1),第三個引數為預設值

(當往上第n行為null時候,取預設值,如不指定,則為null)

與lag相反,lead(col,n,default) 用於統計視窗內往下第n行值. 第乙個引數為列名,第二個引數為往下第n行(可選,預設為1),第三個引數為預設值

(當往下第n行為null時候,取預設值,如不指定,則為null

取分組內排序後,第乙個值.應用場景,如求第一次購買日期。

取分組內排序後,最後乙個值.應用場景,如求第一次購買日期

分析函式hive計算均值 Hive 分析函式

應用場景 1 用於分割槽排序 2 top n 3 層次查詢 常用分析函式 分析函式 描述 rank 返回資料項在分割槽中的排名。排名值序列可能會有間隔 dense rank 返回資料項在分割槽中的排名。排名值序列是連續的,沒有間隔 percent rank 計算當前行的百分比排名 x 1 視窗分割槽...

Hive的分析函式

記錄下hive的常用函式 hive的常用函式和平常我們使用的關係型資料庫基本都差不多,這裡只是記錄一下,方便後面回顧。準備測試資料.hadoop hadoop apache hive 0.13.1 bin cat emp.txt 7369 smith clerk 7902 1980 12 17 80...

hive的分析函式

1 rollup group by 的增強函式 實現根據部門號 工作職位求工資總和,根據部門求工資總和,查所有人的工資總和 通過group by 語句的增加來實現 select deptno,job,sum sal from emp group by rollup deptno,job 語法 gro...