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

hive 內建函式

在Hive中,函式包括以下型別:
一、內建函式

1、數學函式

[plain] view plain copy
print?

(1)round:四捨五入  
         select round(數值,小數點位數);  
(2)ceil:向上取整  
       select ceil(45.6); --46  
(3)floor:向下取整  
       select floor(45.6); --45  

2、字元函式

[plain] view plain copy
print?

(1)lower:轉成小寫  
     select lower('Hive'); --hive  
(2)upper:轉成大寫  
     select lower('Hive'); --HIVE  
(3)length:長度  
     select length('Hive'); --4   
(4)concat:拼接字串  
    select concat('hello','Hive'); --helloHive  
(5)substr:求子串  
     select substr('hive',2); --ive  
     select substr('hive',2,1); --i  
 (6)trim:去掉前後的空格  
         select trim('  hive   '); -hive  
 (7)lpad:左填充  
          對hive填充到10位,補位用#  
    select lpad('hive',10,'#'); --######hive  
 (8)rpad:右填充  
       select rpad('hive',10,'#'); --hive######  

3、收集函式

[plain] view plain copy
print?

select size(map(1,'yy',2,'xx')); --2 map結合的元素個數  

4、轉換函式

[plain] view plain copy
print?

select cast(1 as float); --1.0  
select cast('2016-05-22' as date); --2016-05-22  

5、日期函式

[plain] view plain copy
print?

(1)to_date  
    select to_date('2015-05-22 15:34:23'); --2015-05-22  
 (2)year  
    select year('2015-05-22 15:34:23'); --2015  
 (3)month  
    select month('2015-05-22 15:34:23'); --5  
 (4)day  
    select day('2015-05-22 15:34:23'); --22  
 (5)weekofyear  
    select weekofyear('2015-05-22 15:34:23'); --21  
  (6)datediff  
    select datediff('2015-05-22 15:34:23','2015-05-29 15:34:23'); --[-7]  
 (7)date_add  
    select date_add('2015-05-22 15:34:23',2); --2015-05-24  
 (8)date_sub  
    select date_sub('2015-05-22 15:34:23',2); --2015-05-20  
  (9)查詢當前日期:select substring(from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss'),1,10)

6、條件函式

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

case…when…:條件表示式

[plain] view plain copy
print?

select ename,job,sal,  
           case job when 'president' then sal+100  
            when 'manager'  then sal+800  
            else sal+400  
        end  
    from emp;  

二、聚合函式

[plain] view plain copy
print?

(1)count:總數  
(2)sum:和  
(3)max:最大值  
(4)min:最小值  
(5)avg:平均數  

轉換成MR作業

三、表生成函式

[plain] view plain copy
print?

select explode(map(1,'xx',2,'yy',3,'zz'));  

轉換成MR作業,其結果如下

[plain] view plain copy
print?

1   xx  
2   yy  
3   zz