1. 程式人生 > >hive 常用函數

hive 常用函數

spl to_date least 安裝 .cn xtra default 南京 log

1. parse_url(url, partToExtract[, key])

解析URL字符串,partToExtract的選項包含[HOST,PATH,QUERY,REF,PROTOCOL,FILE,AUTHORITY,USERINFO] eg: 技術分享

2. concat(str1,SEP,str2,SEP,str3,……) 和 concat_ws(SEP,str1,str2,str3, ……)

字符串連接函數,需要是 string型字段。

如果4個字段,想得到如下結果,看下兩個函數的區別:

eg: 技術分享

技術分享

代碼1: select concat(‘江蘇省‘,‘-‘,‘南京市‘,‘-‘,‘玄武區‘,‘-‘,‘徐莊軟件園‘);

代碼2: select concat_ws(‘-‘,‘江蘇省‘,‘南京市‘,‘玄武區‘,‘徐莊軟件園‘);

結論:當連接的內容(字段)多於2個的時候,concat_ws的優勢就顯現了,寫法簡單、方便。

  3. unix_timestamp() 當前系統時間

unix_timestamp() 是將當前系統時間轉換成數字型秒數,from_unixtime 將數字型按照 格式進行時間轉換。

eg:

技術分享

代碼:select from_unixtime(unix_timestamp(),‘yyyy-MM-dd HH:mm:ss‘);

  4. regexp_replace(string A, string B, string C) 字符串替換函數,將字符串A 中的B 用 C 替換。

eg: 技術分享

代碼:select regexp_replace(‘www.tuniu.com‘,‘tuniu‘,‘jd‘);

  5. repeat(string str, int n) 重復N次字符串

eg:技術分享

代碼:select repeat(‘ab‘,3);

  6. lpad(string str, int len, string pad) 將字符串str 用pad進行左補足 到len位(如果位數不足的話)

eg:技術分享

代碼:select lpad(‘ab‘,7,‘k‘);

  7. rpad(string str, int len, string pad) 將字符串str 用pad進行右補足 到len位(如果位數不足的話)

eg:技術分享

代碼:select rpad(‘ab‘,7,‘k‘);

  8. trim(string A) 刪除字符串兩邊的空格,中間的會保留。

相應的 ltrim(string A) ,rtrim(string A)

eg:技術分享

  9. to_date(string timestamp) 將時間戳轉換成日期型字符串

eg:技術分享

代碼:select to_date(‘2017-01-16 09:55:54‘);

  10. datediff(string enddate, string startdate) 返回int 的兩個日期差

eg:技術分享

代碼:select datediff(‘2017-01-16‘, ‘2017-01-10‘);

  11. date_add(string startdate, int days) 日期加減

eg:技術分享

代碼:select date_add(‘2017-01-10‘, 7);

  12. current_timestamp 和 current_date 返回當前時間戳,當前日期

eg:技術分享

  13. date_format(date/timestamp/string ts, string fmt) 按照格式返回字符串

eg: 技術分享

代碼:select date_format(‘2017-01-16 09:55:54‘, ‘yyyy-MM-dd‘);

  14. last_day(string date) 返回 當前時間的月末日期

eg:技術分享

代碼:select last_day(‘2017-01-16 09:55:54‘);

  15. if(boolean testCondition, T valueTrue, T valueFalseOrNull) ,根據條件返回不同的值

eg: 技術分享

  16. nvl(T value, T default_value) 如果T is null ,返回默認值

  17. length(string A) 返回字符串A的長度

eg:技術分享

代碼:select length(‘kimbo‘);

  18. greatest(T v1, T v2, ...) 返回最大值,會過濾null

eg:技術分享

代碼:select greatest(‘2016-01-01‘,NULL,‘2017-01-01‘);

  19. least(T v1, T v2, ...) 返回最小值,會過濾null

eg: 技術分享

代碼:select least(‘2016-01-01‘,NULL,‘2017-01-01‘,‘2015-01-01‘);

  20. rand(), 返回0-1的隨機值。rand(INT seed) 返回固定的隨機值。

eg:技術分享

  21. md5(string/binary) hive 1.3以上版本,返回md5碼

  22. split(str, regex) ,安裝規則截取字符串,返回數組

eg:技術分享

代碼:select split(‘ab-cd‘,‘-‘)[0];

如果是特殊字段,需要轉義,如:select split(‘大阪酒店|$新麗飯店‘,‘\\|\\$‘)[0];

  23. rlike ,正則表達式

eg:技術分享

代碼:select "kimbo789" rlike ‘^\\d*$‘ ;

說明:匹配全數字的字符串

hive 常用函數