irpas技术客

hive的函数_塞尔吉奥拉莫斯_查看hive函数

网络 6150

1.hive内置函数:

首先可以使用命令:show functions查看hive中内置的函数

可以使用命令:desc function nvl命令查看nvl这个函数的详情

常见的内置函数:

1>时间函数(具体用法自行百度)

查询日期之间相差的时间,以及相差几个月的命令:

日期加几天:(同理可加减月份add_months)

其他可以自行百度,这边只记录了我用到的

?2>字符串函数:

3>类型转换函数:

4>数学函数:

5>其他常用函数:

2.hive的窗口函数

?例如:我要查询一个船舶表中的所有数据,并且要查询这个表中的船舶数量,在每一行数据后面加一列

select *,count(*) over(partition?by vessel_bunting_nm) cs from 表名;(over()里面可以不加东西默认全部结果集,我这个是加了一个分组,根据这个分组进行聚合的);

例如:我要查询一个船舶表中的船舶名称,并且要查询这个表中的根据某一分组的总的船舶年龄,

select vessel_nm,vessel_age,sum(vessel_age) over(partition?by 字段) znl from 表名;

还可以在distribute by 字段 后面加 order?by 字段进行组内排序

3.window 子句:

序列函数:

1>NTILE函数:

ntile是hive很强大的一个分析函数,可以看成是:它把有序的数据集合平均分配到指定的数量个桶中,将桶号分配给每一行。如果不能平均分配,则优先分配较小编号的桶,并且各个桶中能放的行数最多相差1

例如:

select 字段1,字段2,字段3,ntile(3) over(partition by owner_management_nm order by date ) lz from 表名,结果如下(类似一个随机取样的结果,想看一下1桶数据,2桶数据,等等等等)

?2>LAG和LEAD函数

lag函数返回当前数据行的前第n行的数据

lead函数返回当前数据行的后第n行的数据

?

?

3>first_value和last_value

?first_value:取分组内排序后,截止到当前行第一个值。

last_value:取分组内排序后,截止到当前行最后一个值

例如:select 字段1,? first_value(字段1) over(partition by 字段2 order by 字段3) lz , last_value(字段1) over(partition by 字段2 order by 字段3 ) lz2 from 表名;

3>排名函数:row_number(),rank() ,dense_rank()

?


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #查看hive函数 #function