这是我参与2022首次更文挑战的第24天,活动详情查看:2022首次更文挑战
本文介绍hive语法中的一个重要部分那就是函数,hive的内置函数有很多,包括集合函数、查询、过滤、筛选、聚合、统计、字符串函数等功能都可以有函数实现,还包括时间日期函数等。
通过输入hive命令查看所有函数: hive> show functions;
空字段赋值
NVL:格式 NVL(string 1,replace_with)。
表中经常会有null的数据,这个函数就是给null的数据赋值。它的功能是如果string1为null,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL,则返回NULL。
例子:select lvl(name,-1) from student;
日期函数
date_format:格式化时间
select date_format('2022-01-01','yyyy-MM-dd');
date_add:时间跟天数相加
select date_add('2022-01-01',5);
Date_sub:时间跟天数相减
select date_sub('2020-01-01',5);
下一个重要函数:CASE WHEN
select id,sum(case sex when ‘男’ then 1 else 0 end) male_count,sum(case sex when ‘女’ then 1 else 0 end)female_count from student group by id;
case在hive中真的很强大,很多地方的数据筛选都可以用到。
简单介绍一下这个函数的作用,其实他很类似java语言中的if..else,就是当满足when后面的条件,就执行then后面的语句,当所有的when后面的都是否,那么就执行else后面语句即可。可以有多个when,当只有一个else。
case when 有两种表达式:
case when s1.sex = '1' then '女' when s1.sex = '0' then '男' else '未知' end as sex,
case s1.sex when '1' then '女' when '0' then '男' else '未知' end as sex,
行转列
CONCAT(string A/col,string B/col ···):返回输入字符串连接后的结果,支持任意个输入字符串;
CONCAT_WS(separator,str1,str2 ......):它是一个特殊形式的CONCAT()。第一个参数剩余参数间的分隔符,分隔符可以是与剩余参数一样的字符串,如果分隔符是NULL,返回值也将是NULL,这个函数会跳过分隔符参数后的任何NULL和空字符串,分隔符将被加到被连接的字符串之间。
COLLECT_SET(col):函数只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总,产生array类型字段。