hive开窗函数

银行会员流水为例:

create table hive_sum(
id string COMMENT '会员ID',
bank_name string COMMENT '银行名称',
create_time string COMMENT '交易时间',
amount double COMMENT '交易金额')
COMMENT 'hive_sum顶级应用'ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'LINES TERMINATED BY '\n';
load data local inpath '/data/tmp/tqc/hive_sum.txt' overwrite into table tmp.hive_sum;

partition by一个字段时,等于聚合函数sum(默认配置不生效)
*

order by的默认窗口总是从结果集的第一行开始到它分组的最后一行。

而partiton by的默认窗口总是从分区的第一行开始



select id,bank_name,create_time,amount,sum(amount) over(partition by id) amount_all 
from tmp.hive_sum order by id,bank_name,create_time;


实际上,期望数据如下:


两个以上字段分组
select id,bank_name,sum(amount)  amount_all
from tmp.hive_sum
group by id,bank_name
with rollup
order by id, bank_name desc ;


获取分组后当前行前后两条
select id,create_time,  amount,sum(amount) over(partition by id order by create_time asc rows between 2 preceding and 2 following ) amount_all
from tmp.hive_sum
order by id, create_time asc;


最后,数据 丢给分析师使用

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29665621/viewspace-2078912/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29665621/viewspace-2078912/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值