1. 程式人生 > >hive的內建函式

hive的內建函式

在Hive中,函式包括以下型別:

一、內建函式

1、數學函式

  1. (1)round:四捨五入  
  2.          select round(數值,小數點位數);  
  3. (2)ceil:向上取整  
  4.        select ceil(45.6); --46  
  5. (3)floor:向下取整  
  6.        select floor(45.6); --45  
2、字元函式
  1. (1)lower:轉成小寫  
  2.      select lower('Hive'); --hive  
  3. (2)upper:轉成大寫  
  4.      select lower('Hive'); --HIVE  
  5. (3)length:長度  
  6.      select length('Hive'); --4   
  7. (4)concat:拼接字串  
  8.     select concat('hello','Hive'); --helloHive  
  9. (5)substr:求子串  
  10.      select substr('hive',2); --ive  
  11.      select substr('hive',2,1); --i  
  12.  (6)trim:去掉前後的空格  
  13.          select trim('  hive   '); -hive  
  14.  (7)lpad:左填充  
  15.           對hive填充到10位,補位用#  
  16.     select lpad('hive',10,'#'); --######hive  
  17.  (8)rpad:右填充  
  18.        select rpad('hive',10,'#'); --hive######  
3、收集函式 
  1. select size(map(1,'yy',2,'xx')); --2 map結合的元素個數  
4、轉換函式
  1. select cast(1 as float); --1.0  
  2. select cast('2016-05-22' as date); --2016-05-22  
5、日期函式
  1. (1)to_date  
  2.     select to_date('2015-05-22 15:34:23'); --2015-05-22  
  3.  (2)year  
  4.     select year('2015-05-22 15:34:23'); --2015  
  5.  (3)month  
  6.     select month('2015-05-22 15:34:23'); --5  
  7.  (4)day  
  8.     select day('2015-05-22 15:34:23'); --22  
  9.  (5)weekofyear  
  10.     select weekofyear('2015-05-22 15:34:23'); --21  
  11.   (6)datediff  
  12.     select datediff('2015-05-22 15:34:23','2015-05-29 15:34:23'); --[-7]  
  13.  (7)date_add  
  14.     select date_add('2015-05-22 15:34:23',2); --2015-05-24  
  15.  (8)date_sub  
  16.     select date_sub('2015-05-22 15:34:23',2); --2015-05-20  
6、條件函式

coalesce:從左到右返回第一個不為null的值

case...when...:條件表示式

  1. select ename,job,sal,  
  2.            case job when 'president' then sal+100  
  3.             when 'manager'  then sal+800  
  4.             else sal+400  
  5.         end  
  6.     from emp;  

二、聚合函式

  1. (1)count:總數  
  2. (2)sum:和  
  3. (3)max:最大值  
  4. (4)min:最小值  
  5. (5)avg:平均數  
  轉換成MR作業

三、表生成函式  

  1. select explode(map(1,'xx',2,'yy',3,'zz'));  
   轉換成MR作業,其結果如下
  1. 1   xx  
  2. 2   yy  
  3. 3   zz