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
  1. 条件判断函数 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 
原文地址:https://www.cnblogs.com/Tcorner/p/12857055.html