Hive常用函数
Hive常用函数
cast函数
CAST函数:显式的将一个类型的数据转换成另一个数据类型。
语法为:cast(value AS TYPE)
map函数
MAP:MAP包含key->value键值对,可以通过key来访问元素。比如”userlist”是一个map类型,其中username是key,password是value;那么我们可以通过userlist['username']来得到这个用户对应的password
语法:map(k1,v1,k2,v2,…)
返回值:{'k1':'v1', 'k2':'v2'}
说明:使用给定的 key-value 对,构造一个 map 数据结构
举例:
hive> select map('k1','v1','k2','v2') from test;
OK
{"k2":"v2","k1":"v1"}
表格生成函数
explode
数组拆分成多行: explode
语法: explode(ARRAY)
返回值: 多行
说明: 将数组中的元素拆分成多行显示
举例:
hive> select explode(array(1,2,3)) from lxw1234;
OK
1
2
3
hive> select explode(map('k1','v1','k2','v2')) from lxw1234;
OK
k2 v2
k1 v1
判断函数
函数: if
If函数:if和case差不多,都是处理单个列的查询结果。
语法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)
返回值: T
说明: 当条件testCondition为TRUE时,返回valueTrue;否则返回valueFalseOrNull
举例:if(条件表达式,结果1,结果2)相当于java中的三目运算符,只是if后面的表达式类型可以不一样。
hive> select if(a=a,’bbbb’,111) from lxw_dual;
-- result: bbbb
hive> select if(1<2,100,200) from lxw_dual;
-- result: 200
非空查找函数: COALESCE
语法: COALESCE(T v1, T v2, …)
返回值: T
说明: 返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULL
hive> select COALESCE(null,’aaa’,50) from lxw_dual;
-- result: aaa
条件件判断函数: CASE A
这种CASE A和if差不多,条件查询(常用)
语法:
CASE a
WHEN b THEN
c [
WHEN d THEN
e]* [
ELSE
f]
END
返回值: T
说明:如果a等于b,那么返回c;如果a等于d,那么返回e;否则返回f
举例:
hive> Select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end from lxw_dual;
mary
hive> Select case 200 when 50 then 'tom'when 100 then 'mary' else 'tim' end from lxw_dual;
tim
- 条件判断函数 case
这种case,case后面没有表达式,用于处理单个列的查询结果
语法:
CASE WHEN a THEN b [WHEN cTHEN d]* [ELSE e] END
返回值: T
说明:如果a为TRUE,则返回b;如果c为TRUE,则返回d;否则返回e
举例:
hive> select case when 1=2 then 'tom' when 2=2 then 'mary' else 'tim' end from lxw_dual;
mary
hive> select case when 1=1 then 'tom' when 2=2 then 'mary' else 'tim' end from lxw_dual;
tom