#HIve#IDE中常用函数的记录


IDE比较好用的函数推荐:
<a name="1)打标函数:row_number,"></a>1)打标函数:row_number,可以为变量打标进行标记;
常用场景:在几等分时用到;
使用方法:

CREATE TEMPORARY FUNCTION row_number AS 'com.taobao.ad.data.search.udf.UDFrow_number';

可以有一个或多个参数 row_number(col …) 使用,举例:下面是取每个类目下取RPM--TOP100的词:

select c.*

from

(select b.*,row_number(b.normalword,b.cat1) as rank
from
(select a.*,cat1,a.rev/a.impression*1000 as rpm
from tmp_item_out a
where a. normalword is not null
distribute by a.normalword,cat1
sort by a.normalword,cat1,(a.rev/a.impression*1000) desc) b )c

where c.rank<=100;
<a name="2)累加函数:summary,可"></a>2)累加函数:summary,可以计算某一列变量的累加值;
常用场景:在求某个变量累计百分比中可以用到;
使用方法:

CREATE TEMPORARY FUNCTION summary as 'com.taobao.hive.udf.GenericUDFAccumulate';
说明:至少需要2个参数,一个为分组key,一个为累加列。
summary(p_col1,p_col2…,value_col)
p_col1,p_col2… :可支持多个参数,即对这些列进行分组
value_col :需要累加的列,只支持数值类型的参数
实现原理:与之前的row_number函数的实现原理相同,在内层查询中,需要通过Hive的distriubte by按照p_col1,p_col2… 把具有相同key的数据分发都同一个reduce中作为输出。然后再外层的嵌套中使用summary函数,对数据累加。
1、按照pt分组
select
t1.*,
summary(t1.pt,t1.prod_cnt) as sum_prod
from(select *from t_pg_sr4 distribute by pt sort by pt,prod_cnt DESC)t1;

2、把所有数据分成一个大组,常量’1’相当于是分组key
select
t1.*,
summary(‘1’,t1.prod_cnt) as sum_prod
from(select * from t_pg_sr4 distribute by 1 sort by ‘1’,prod_cnt DESC)t1;
3、A,B两列,不分组,按A排序,按B累加的情况:
select
t1.*,
summary(‘1’,t1.B) as sum_prod
from(select * from a distribute by 1 sort by‘1’,A DESC)t1;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值