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';

 

posted @ 2020-10-10 12:06  楔子  阅读(125)  评论(0)    收藏  举报