1. 程式人生 > 實用技巧 >Hive 分析函式

Hive 分析函式

1)LAG與LEAD

LAG(col,n,default) 用於統計視窗內往上第n行值

第一個引數為列名,第二個引數為往上第n行(可選,預設為1),第三個引數為預設值(當往上第n行為NULL時候,取預設值,如不指定,則為NULL)

例子:獲取使用者這次下單與下次下單的時間,統計時間差 select order_no,create_time,LEAD(create_time,1) over (order by create_time asc) as next_row from bst_agg_car_hailing_complete_order_model_d where user_no='1000019771';

LEAD與LAG相反 ,LEAD(col,n,DEFAULT) 用於統計視窗內往下第n行值

第一個引數為列名,第二個引數為往下第n行(可選,預設為1),第三個引數為預設值(當往下第n行為NULL時候,取預設值,如不指定,則為NULL)

例子:

select order_no,create_time,LAG(create_time,1) over (order by create_time asc) as last_row from bst_agg_car_hailing_complete_order_model_d where user_no='1000019771';

應用:

獲取上一次與這一次下單的間隔天數
select
order_no, sell_channel_no, provider_no, supplier_no, from_city_no, create_time as order_date, LEAD(create_time, 1) over(order by create_time asc) as next_order_date, datediff(LEAD(create_time, 1) over(order by create_time asc),create_time) as diff_days
from bst_agg_car_hailing_complete_order_model_d where user_no = '1000019771';