hive內建函式

Sophie May發表於2018-10-17

關係運算

  • like A like B 如果字串A符合表示式B 的正則語法,則為TRUE,如果字串A或者字串B為NULL
select 'football' like 'foot%';->true 
複製程式碼
  • rlike A RLIKE B 如果字串A符合JAVA正規表示式B的正則語法,則為TRUE
  • REGEXP 功能與RLIKE相同

數學函式

  • round 四捨五入 round(DOUBLE a, INT d) d表示要保留小數位數
select ceil(45.926,2) ->46.93
複製程式碼
  • ceil 向上取整
select ceil(45.926) ->46
複製程式碼
  • floor 向下取整
select ceil(45.926) ->45
- round 取隨機數
複製程式碼

字串函式

  • lower 小寫字母
  • upper 大寫字母
  • lengh 長度
select length('你好')->2

- reverse 字串反轉
- concat 字串拼接
複製程式碼

select concat('程式猿',' 你好')->程式猿你好

  • concat_ws 帶分隔符字串連線函式
  concat_ws(string SEP, string A, string B…)
  SEP表示各個字串間的分隔符

複製程式碼
  • substr 字串子串
select substr('程式猿你好',4,2)->你好
複製程式碼
  • trim 去掉兩端空格
  • lpad 左填充 lpad(String a,int b,String c) b表示填充後的總長度
lpad('程式猿你好', 10, *)->*****程式猿你好
複製程式碼
  • rpad 右填充
 rpad('程式猿你好', 10, *)->程式猿你好*****
複製程式碼
  • split 分隔字串函式
按照pat字串分割str,會返回分割後的字串陣列
select split('abtcdtef','t')->["ab","cd","ef"]
複製程式碼
  • repeat 重複字串函式
 repeat(string str, int n)  返回重複n次後的str字串
select repeat('abc',2)->abcabc
複製程式碼

收集函式

  • size 求map或者array的長度

轉換函式

  • cast
select cast(1 as float)->1.0
複製程式碼

日期函式

  • unix_timestamp 獲得當前時區的UNIX時間戳
  • to_date 轉日期函式 to_date(string time)
  • year 日期轉年函式year(string date)
  • month 日期轉月函式
  • day 日期轉天函式
  • hour 日期轉小時函式
  • minute 日期轉分鐘函式
  • weekofyear 日期轉周函式
select weekofyear('2011-12-08')->49
複製程式碼
  • datediff 日期比較函式
atediff(string enddate, string startdate)
select datediff('2012-12-08','2012-05-09')->213
複製程式碼
  • date_sub 日期減少函式

  • date_add 日期增加函式

    date_add(string startdate, int days) select date_add('2012-12-08',10)->2012-12-18

  • from_unixtime UNIX時間戳轉日期函式

select from_unixtime(1323308943,'yyyyMMdd')->  20111208
複製程式碼

條件函式

  • if 函式
if(boolean testCondition, T valueTrue, T valueFalseOrNull)
 select if(1=2,100,200)->200
複製程式碼
  • coalesce 非空查詢,返回引數中第一個非空值
 COALESCE(T v1, T v2, …)
select COALESCE(null,'100','50′)->100

複製程式碼
  • case 條件判斷函式

    CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END 如果a等於b,那麼返回c;如果a等於d,那麼返回e;否則返回f CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END
    如果a為TRUE,則返回b;如果c為TRUE,則返回d;否則返回e

複雜型別

  • array型別訪問: A[n]
  • map型別訪問: M[key]
  • struct型別訪問: S.x
  • Map型別構建: map (key1, value1, key2, value2, …)
  • Struct型別構建 :struct(val1, val2, val3, …)
  • array型別構建: array(val1, val2, …)

集合統計函式

  • count:個數統計
  • sum :總和統計
  • avg:平均值統計
  • min:最小值統計
  • max:組大值統計
  • percentile:中位數統計

相關文章