Hive(10) Hvie函数详解-常见函数使用和自定义函数


Hvie函数详解-常见函数使用和自定义函数

函数

常用系统内置的函数

nvl (空字段赋值)

有时候我们查到的一些值是NULL, 但是有时候NULL不能准确的表达含义和参与运算(NULL与任何值运算都为NULL), 比如说工资的奖金

这时我们可以使用nvl()函数, 在查询时将NULL值转换为一个默认值

nvl(<可能为空的字段>, <自定义默认值>);

举例 查询员工的工资和奖金, 如果为NULL, 则显示0

select 工资, nvl(奖金, 0)
from 员工表;

这时, 如果某个人的奖金为NULL, 就会显示为0而不是NULL


case when (判断)

有点类似于MySQL中的if() 函数

case <字段名> when <如果等于这个值> then <显示的值> else <如果不等于显示的值> end

举例 在员工表中, 统计每个部门男女各有多少人

select
	部门名称,
	sum(case 性别 when '男' then 1 else 0 end),
	sum(case 性别 when '女' then 1 else 0 end)from 员工表
group by 部门名称;

说明

这里巧妙的运用了case when, 用男性举例, 如果是男性, 就显示1, 然后再把1 作为sun() 的参数, 就实现了累加的效果


collect_set (行转为集合)

它的主要作用是将某字段的值进行去重汇总,产生一个array类型字段, 一般用于分组的时候

collect(<字段名>)

注意

函数只接受基本数据类型, 不接受集合类型

举例 加入一张表里有学生姓名(string)班级(string) 这两个字段, 要求查询每个班级的名称和这个班里的所有同学的姓名

select 班级, collect_set(学生姓名姓名) as 姓名
from 学生表 
group by 班级;

结果举例, 结果会是以下形式:

班级 姓名
1 [“小明”,“小刚”]
2 [“红红”, “莉莉”, “冬梅”]

explode (集合转为行)

与上面相反, Hive还可以将一个集合类型拆分成多行

explode()

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值