条件函数
- If函数: if
语法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)
返回值: T
说明: 当条件testCondition为TRUE时,返回valueTrue;否则返回valueFalseOrNullhive> select if(1=2,100,200) from my_table; 200 hive> select if(1=1,100,200) from my_table; 100
- 非空查找函数: COALESCE
语法: COALESCE(T v1, T v2, …)
返回值: T
说明: 返回参数中的第一个非空值;如果所有值都为NULL,那么返回NULLhive> select COALESCE(null,'100','50′) from my_table; 100
- 条件判断函数:CASE
语法: CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
返回值: T
说明:如果a等于b,那么返回c;如果a等于d,那么返回e;否则返回fhive> Select case 100 when 50 then 'tom' when 100 then 'mary' else 'tim' end from my_table; mary hive> Select case 200 when 50 then 'tom' when 100 then 'mary' else 'tim' end from my_table; tim
- 条件判断函数:CASE
语法: CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END
返回值: T
说明:如果a为TRUE,则返回b;如果c为TRUE,则返回d;否则返回ehive> select case when 1=2 then 'tom' when 2=2 then 'mary' else 'tim' end from my_table; mary hive> select case when 1=1 then 'tom' when 2=2 then 'mary' else 'tim' end from my_table; tom
表格生成函数 Table-Generating Functions (UDTF)
- 数组拆分成多行:explode
语法: explode(ARRAY)
返回值: 多行
说明: 将数组中的元素拆分成多行显示hive> select explode(array(1,2,3)) from my_table; OK 1 2 3
- Map 拆分成多行:explode
语法: explode(Map)
返回值: 多行
说明: 将 Map 中的元素拆分成多行显示hive> select explode(map('k1','v1','k2','v2')) from my_table; OK k2 v2 k1 v1