一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第1天,点击查看活动详情。
hive的常用函数知识沉淀,这个是系列更文,本文为第一篇,敬请关注后续更文呀。
空值处理相关函数
1、nvl 空值转换函数 作用:设置字段为空时的默认返回值
使用nvl函数的时候,必须要将字段重命名,即 as xxxx (最好是和原值相同,保持统一),否则数据无法正常插入到表内,如下语句就是设置了person_type的值为null时的默认值,比如‘-911’,或者直接为null也可以,能统一的表示该字段为空即可
nvl(person_type,-911) as person_type
引申:筛选某字段不等于空时的语法,person_type <> ''
2、coalesce 返回非null值 作用:循环遍历遇到非null值就停止并返回
这也是一个和null值判断有关的函数,现在有好几个表达式都表示同一个字段含义,并且不确定哪个表达式一定有值,则可以用这个函数。(expression_1, expression_2, ...,expression_n)分别表示这些参数表达式,如下所示,当在这些表达式中遇到非null的值,这时候就停止并返回该表达式的值,还有一种情况是所有的表达式的结果都是空,那么也会返回出一个空值的,这里是返回的一个‘-911’。
coalesce(t3.area_org_name,t32.area_org_name,'-911') as area_org_name
3、reflect+regexp_replace函数 作用:设置一个随机值的id键
这里用到两个函数分别是reflect和regexp_replace,reflect作用非常强大,可以在sql中调用到java中的函数,实现函数自由啦,第一个参数是jar包名称,第二个是方法名称,第三个和第四个就是参数,按照函数的需要设置参数即可。
regexp_replace用于替换特殊字符,将生成的随机数中的-替换成‘’,避免sql中无法识别导致报错。这个函数的用处也很大,可以替换各种特殊字符,比如反斜杠,星号等等。
regexp_replace(reflect('java.util.UUID','randomUUID'),'-','') as id