一、數學函式
1、取整函式: round
1.函式描述
回傳值 語法結構 功能描述 double round(double a) 回傳double型別的整數值部分(遵循四舍五入)
2.例程
hive> select round(10.235);
#----
10.0
#----
2、指定精度取整函式: round
1.函式描述
回傳值 語法結構 功能描述 double round(double a, int d) 回傳指定精度d的double型別
2.例程
hive> select round(3.141592,4);
#-----
3.1416
#-----
3、向下取整函式: floor
1.函式描述
回傳值 語法結構 功能描述 bigint floor(double a) 回傳等于或者小于該double變數的最大的整數
2.例程
hive> select floor(3.1415926);
#--
3
#--
hive> select floor(-10.2);
#--
-11
#--
4、向上取整函式: ceil
1.函式描述
回傳值 語法結構 功能描述 bigint ceil(double a) 回傳等于或者大于該double變數的最小的整數
2.例程
hive> select ceil(10.1);
#--
11
#--
5、向上取整函式: ceiling
1.函式描述
回傳值 語法結構 功能描述 bigint ceiling(double a) 回傳等于或者大于該double變數的最小的整數
2.例程
hive> select ceiling(3.1415926);
#--
4
#--
6、取亂數函式: rand
1.函式描述
回傳值 語法結構 功能描述 double rand(),rand(int seed) 回傳一個double型0到1范圍內的亂數,如果指定種子seed,則會等到一個穩定的亂數序列
2.例程
hive> select rand();
#-----------------
0.5577432776034763
#-----------------
hive> select rand();
#-----------------
0.6638336467363424
#-----------------
#當傳入種子后,資料就固定了
hive> select rand(100);
#-----------------
0.7220096548596434
#-----------------
hive> select rand(100);
#-----------------
0.7220096548596434
#-----------------
7、自然指數函式: exp
1.函式描述
回傳值 語法結構 功能描述 double exp(double a) 回傳自然對數e的a次方,a可為小數
2.例程
hive> select exp(3);
#-----------------
20.085536923187668
#-----------------
8、自然對數函式: ln
1.函式描述
回傳值 語法結構 功能描述 double ln(double a) 回傳a的自然對數,a可為小數
2.例程
hive> select ln(7.38905609893065);
#--
2.0
#--
9、以10為底對數函式: log10
1.函式描述
回傳值 語法結構 功能描述 double log10(double a) 回傳以10為底的a的對數,a可為小數
2.例程
hive> select log10(100);
#--
2.0
#--
10、以2為底對數函式: log2
1.函式描述
回傳值 語法結構 功能描述 double log2(double a) 回傳以2為底的a的對數,a可為小數
2.例程
hive> select log2(8);
#--
3.0
#--
11、對數函式: log
1.函式描述
回傳值 語法結構 功能描述 double log(double base, double a) 回傳以base為底的a的對數,base 與 a都是double型別
2.例程
hive> select log(4,256);
#--
4.0
#--
12、冪運算函式: pow
1.函式描述
回傳值 語法結構 功能描述 double pow(double a, double p), power(double a, double p) 回傳a的p次冪
2.例程
hive> select pow(2,4);
#---
16.0
#---
13、開平方函式: sqrt
1.函式描述
回傳值 語法結構 功能描述 double sqrt(double a) 回傳a的平方根
2.例程
hive> select sqrt(16);
#--
4.0
#--
14、 二進制函式: bin
1.函式描述
回傳值 語法結構 功能描述 string bin(BIGINT a) 回傳a的二進制代碼表示,,a為BIGINT型別
2.例程
hive> select bin(7);
#--
111
#--
15、十六進制函式: hex
1.函式描述
回傳值 語法結構 功能描述 string hex(BIGINT a),hex(string a) 如果變數是int型別,那么回傳a的十六進制表示;如果變數是string型別,則回傳該字串的十六進制表示
2.例程
hive> select hex(17);
#--
11
#--
hive> select hex(‘abc’);
#-----
616263
#-----
16、反轉十六進制函式: unhex
1.函式描述
回傳值 語法結構 功能描述 string unhex(string a) 回傳該十六進制字串所代碼的字串,hex的逆方法
2.例程
hive> select unhex(‘616263’);
#--
abc
#--
17、進制轉換函式: conv
1.函式描述
回傳值 語法結構 功能描述 string conv(BIGINT num, int from_base, int to_base),conv(STRING num, int from_base, int to_base) 將bigint/string數值num從from_base進制轉化到to_base進制
2.例程
hive> select conv(17,10,16);
#--
11
#--
hive> select conv(17,10,2);
#----
10001
#----
18、絕對值函式: abs
1.函式描述
回傳值 語法描述 功能描述 double or int abs(double a),abs(int a) 回傳數值a的絕對值
2.例程
hive> select abs(-3.9);
#--
3.9
#--
19、正取余函式: pmod
1.函式描述
回傳值 語法描述 功能描述 int or double pmod(int a, int b),pmod(double a, double b) 回傳正的a除以b的余數
2.例程
hive> select pmod(9,4);
#--
1
#--
hive> select pmod(-9,4);
#--
3
#--
20、正弦函式: sin
1.函式描述
回傳值 語法描述 功能描述 double sin(double a) 回傳a的正弦值
2.例程
hive> select sin(0.8);
#-----------------
0.7173560908995228
#-----------------
21、反正弦函式: asin
1.函式描述
回傳值 語法描述 功能描述 double asin(double a) 回傳a的反正弦值
2.例程
hive> select asin(0.7173560908995228);
#--
0.8
#--
22、余弦函式: cos
1.函式描述
回傳值 語法描述 功能描述 double cos(double a) 回傳a的余弦值
2.例程
hive> select cos(0.9);
#-----------------
0.6216099682706644
#-----------------
23、反余弦函式: acos
1.函式描述
回傳值 語法描述 功能描述 double acos(double a) 回傳a的反余弦值
2.例程
hive> select acos(0.6216099682706644);
#--
0.9
#--
24、正切函式:tan
1.函式描述
回傳值 語法描述 功能描述 double tan(double a) 回傳a的正切值
2.例程
hive> select tan(0.8);
#-----------------
1.0296385570503641
#-----------------
25、反正切函式:atan
1.函式描述
回傳值 語法描述 功能描述 double atan(double a) 回傳a的反正切值
2.例程
hive> select atan(1.0296385570503641);
#--
0.8
#--
26、弧度值轉換角度值:degrees
1.函式描述
回傳值 語法結構 功能描述 double degrees(double a) 回傳a的角度值
2.例程
hive> select degrees(1);
#----------------
57.29577951308232
#----------------
27、角度值轉換成弧度值:radians
1.函式描述
回傳值 語法結構 功能描述 double radians(double a) 回傳a的弧度值
2.例程
hive> select radians(57.29577951308232);
#--
1.0
#--
28、positive函式: positive
1.函式描述
回傳值 語法結構 功能描述 int or double positive(int a), positive(double a) 回傳a的正數
2.例程
hive> select positive(-10);
#---
10
#---
29、negative函式: negative
1.函式描述
回傳值 語法結構 功能描述 int or double negative(int a), negative(double a) 回傳a的負數
2.例程
hive> select negative(5);
#---
-5
#---
30、判斷正負函式:sign
1.函式描述
回傳值 語法結構 功能描述 double sign(double a) 如果a是正數則回傳1.0,是負數則回傳-1.0,否則回傳0.0
2.例程
hive> select sign(-4);
#---
-1.0
#---
31、數學e函式:e
1.函式描述
回傳值 語法結構 功能描述 double e() 數學常數e
2.例程
hive> select e();
#----------------
2.718281828459045
#----------------
32、數學pi函式:pi
1.函式描述
回傳值 語法結構 功能描述 double pi() 圓周率π
2.例程
hive> select pi();
#----------------
3.141592653589793
#----------------
33、階乘函式:factorial
1.函式描述
回傳值 語法結構 功能描述 bigint factorial(int a) 求a的階乘
2.例程
hive> select factorial(5);
#----
120
#----
34、立方根函式:cbrt
1.函式描述
回傳值 語法結構 功能描述 double cbrt(double a) 求a的立方根
2.例程
hive> select cbrt(27);
#--
3
#--
35、左移函式:shiftleft
1.函式描述
回傳值 語法結構 功能描述 int bigint shiftleft(BIGINT a, int b) 按位左移
2.例程
hive> select shiftleft(4,2);
#--
16
#--
36、右移函式:shiftright
1.函式描述
回傳值 語法結構 功能描述 int bigint shiftright(BIGINT a, int b) 按位右移
2.例程
hive> select shiftright(16,1);
#--
8
#--
37、無符號按位右移函式:shiftrightunsigned
1.函式描述
回傳值 語法結構 功能描述 int bigint shiftrightunsigned(BIGINT a, int b) 無符號按位右移(<<<)
2.例程
hive> select shiftrightunsigned(32,2)
#--
8
#--
38、求最大值函式:greatest
1.函式描述
回傳值 語法結構 功能描述 T greatest(T v1, T v2, …) 求最大值
2.例程
hive> select greatest(1,2,3);
#--
3
#--
39、求最小值函式:least
1.函式描述
回傳值 語法結構 功能描述 T least(T v1, T v2, …) 求最小值
2.例程
hive> select least(1,2,3);
#--
1
#--
40、銀行家舍入法函式:bround
1.函式描述
回傳值 語法結構 功能描述 double bround(double a) 銀行家舍入法(1-4:舍,6-9:進,5->前位數是偶:舍,5->前位數是奇:進)
2.例程
hive> select bround(3.5)
#--
3.0
#--
41、銀行家精確舍入法函式:bround
1.函式描述
回傳值 語法結構 功能描述 double bround(double a,int d) 銀行家舍入法,保留d位小數
2.例程
hive> select bround(3.15,1)
#---
3.1
#---
hive> select bround(3.25,1)
#---
3.3
#---
二、日期函式
1、UNIX時間戳轉日期函式:from_unixtime
1.函式描述
回傳值 語法結構 功能描述 string from_unixtime(bigint unixtime[, string format]) 轉化UNIX時間戳(從1970-01-01 00:00:00 UTC到指定時間的秒數)到當前時區的時間格式——format格式(format可為“yyyy-MM-dd hh:mm:ss”,“yyyy-MM-dd hh”,“yyyy-MM-dd hh:mm”等等)
2.例程
hive> select from_unixtime(1250111000,“yyyy-MM-dd”);
#---------
2022-01-06
#---------
2、獲取當前UNIX時間戳函式:unix_timestamp
1.函式描述
回傳值 語法結構 功能描述 bigint unix_timestamp() 獲得當前時區的UNIX時間戳
2.例程
hive> select unix_timestamp();
#---------
1594648263
#---------
3、日期轉UNIX時間戳函式:unix_timestamp
1.函式描述
回傳值 語法結構 功能描述 bigint unix_timestamp(string date) 將格式為yyyy-MM-dd HH:mm:ss的時間字串轉換成時間戳,如果轉化失敗,則回傳0,
2.例程
hive> select unix_timestamp(‘2000-1-1 8:8:8’);
#--------
946685288
#--------
4、指定格式日期轉UNIX時間戳函式:unix_timestamp
1.函式描述
回傳值 語法結構 功能描述 bigint unix_timestamp(string date, string pattern) 將指定時間字串格式字串轉換成Unix時間戳,如果轉化失敗,則回傳0,
2.例程
hive> select unix_timestamp(‘2009-03-20’, ‘yyyy-MM-dd’);
#---------
1237478400
#---------
5、日期時間轉日期函式:to_date
1.函式描述
回傳值 語法結構 功能描述 string to_date(string timestamp) 回傳日期時間欄位中的日期部分
2.例程
hive> select to_date(‘1970-01-01 23:00:00’);
#---------
1970-01-01
#---------
6、日期轉年函式: year
1.函式描述
回傳值 語法結構 功能描述 int year(string date) 回傳日期中的年
2.例程
hive> select year(“1970-01-01 00:00:00”);
#---
1970
#---
7、日期轉月函式: month
1.函式描述
回傳值 語法結構 功能描述 int month (string date) 回傳日期中的月份
2.例程
hive> select month(“1970-11-01”);
#--
11
#--
8、日期轉天函式: day
1.函式描述
回傳值 語法結構 功能描述 int day (string date) 回傳日期中的天
2.例程
hive> select day(“1970-11-01”);
#--
1
#--
9、日期轉小時函式: hour
1.函式描述
回傳值 語法結構 功能描述 int hour (string date) 回傳日期中的小時
2.例程
hive> select hour(‘2009-07-30 12:58:59’);
#--
12
#--
10、日期轉分鐘函式: minute
1.函式描述
回傳值 語法結構 功能描述 int minute (string date) 回傳日期中的分鐘
2.例程
hive> select minute(‘2011-12-08 10:03:01’);
#--
3
#--
11、日期轉秒函式: second
1.函式描述
回傳值 語法結構 功能描述 int second (string date) 回傳日期中的秒
2.例程
hive> select second(‘2011-12-08 10:03:01’);
#--
1
#--
12、日期轉周函式:weekofyear
1.函式描述
回傳值 語法結構 功能描述 int weekofyear (string date) 回傳時間字串位于一年中的第幾個周內
2.例程
hive> select weekofyear(‘2011-12-08 10:03:01’);
#---
49
#---
13、日期比較函式: datediff
1.函式描述
回傳值 語法結構 功能描述 int datediff(string enddate, string startdate) 回傳結束日期減去開始日期的天數
2.例程
hive> select datediff(‘2012-12-08’,‘2012-05-09’);
#--
213
#--
14、日期增加函式: date_add
1.函式描述
回傳值 語法結構 功能描述 string date_add(string startdate, int days) 回傳開始日期startdate增加days天后的日期
2.例程
hive> select date_add(‘2012-12-08’,10);
#---------
2012-12-18
#---------
15、日期減少函式: date_sub
1.函式描述
回傳值 語法結構 功能描述 string date_sub (string startdate, int days) 回傳開始日期startdate減少days天后的日期
2.例程
hive> select date_sub(‘2012-12-08’,10);
#---------
2012-11-28
#---------
16、轉化成指定的時區下時間戳函式: from_utc_timestamp
1.函式描述
回傳值 語法結構 功能描述 timestamp from_utc_timestamp(timestamp, string timezone) 如果給定的時間戳并非UTC,則將其轉化成指定的時區下時間戳
2.例程
hive> select from_utc_timestamp(‘1970-01-01 08:00:00’,‘PST’);
#------------------
1970-01-01 00:00:00
#------------------
17、轉化成UTC下的時間戳函式: to_utc_timestamp
1.函式描述
回傳值 語法結構 功能描述 timestamp to_utc_timestamp(timestamp, string timezone) 如果給定的時間戳指定的時區下時間戳,則將其轉化成UTC下的時間戳
2.例程
hive> select to_utc_timestamp(‘1970-01-01 00:00:00’,‘PST’);
#------------------
1970-01-01 08:00:00
#------------------
18、當前時間日期函式:current_date
1.函式描述
回傳值 語法結構 功能描述 date current_date() 回傳當前時間日期
2.例程
hive> select current_date;
#---------
2022-01-06
#---------
19、當前時間日期函式:current_timestamp
1.函式描述
回傳值 語法結構 功能描述 timestamp current_timestamp() 回傳當前時間戳
2.例程
hive> select current_timestamp();
#----------------------
2022-01-06 22:52:11.309
#----------------------
20、月份增加函式:add_months
1.函式描述
回傳值 語法結構 功能描述 string add_months(string start_date, int num_months) 回傳當前時間下再增加num_months個月的日期
2.例程
hive> select add_months(‘1996-10-21’,10);
#---------
1997-08-21
#---------
21、最后一天的日期函式:last_day
1.函式描述
回傳值 語法結構 功能描述 string last_day(string date) 回傳這個月的最后一天的日期,忽略時分秒部分(HH:mm:ss)
2.例程
hive> select last_day(current_date());
#---------
2020-07-31
#---------
22、下一個星期X所對應的日期函式:next_day
1.函式描述
回傳值 語法結構 功能描述 string next_day(string start_date, string day_of_week) 回傳當前時間的下一個星期X所對應的日期 如:next_day(‘2015-01-14’, ‘TU’) = 2015-01-20 以2015-01-14為開始時間,其下一個星期二所對應的日期為2015-01-20
2.例程
hive> select next_day(current_date(),‘su’);
#---------
2020-07-19
#---------
23、時間的最開始年份或月份函式:trunc
1.函式描述
回傳值 語法結構 功能描述 string trunc(string date, string format) 回傳時間的最開始年份或月份 如trunc(“2016-06-26”,“MM”)=2016-06-01 trunc(“2016-06-26”,“YY”)=2016-01-01 注意所支持的格式為MONTH/MON/MM, YEAR/YYYY/YY
2.例程
hive> select trunc(current_date(),‘MM’);
#---------
2020-07-01
#---------
24、相差的月份函式:months_between
1.函式描述
回傳值 語法結構 功能描述 double months_between(date1, date2) 回傳date1與date2之間相差的月份,如date1>date2,則回傳正,如果date1<date2,則回傳負,否則回傳0.0 如:months_between(‘1997-02-28 10:30:00’, ‘1996-10-30’) = 3.94959677 1997-02-28 10:30:00與1996-10-30相差3.94959677個月
2.例程
hive> select months_between(current_date(),‘2020-5-13’);
#--
2.0
#--
25、指定格式回傳時間函式:date_format
1.函式描述
回傳值 語法結構 功能描述 string date_format(date/timestamp/string ts, string fmt) 按指定格式回傳時間date 如:date_format(“2016-06-22”,“MM-dd”)=06-22
2.例程
hive> select date_format(current_date(),‘MM.dd’);
#----
07.13
#----
26、當前星期函式:dayofweek
1.函式描述
回傳值 語法結構 功能描述 int dayofweek(date) 回傳日期那天的周幾
2.例程
hive> select dayofweek(current_date());
#--
2
#--
27、季節函式:quarter
1.函式描述
回傳值 語法結構 功能描述 int quarter(date/timestamp/string) 回傳當前時間屬性哪個季度 如quarter(‘2015-04-08’) = 2
三、條件函式
1、If函式: if
1.函式描述
回傳值 語法結構 功能描述 T if(boolean testCondition, T valueTrue, T valueFalseOrNull) 當條件testCondition為TRUE時,回傳valueTrue;否則回傳valueFalseOrNull(valueTrue,valueFalseOrNull為泛型)
2.例程
hive> select if(1=1,100,200);
#---
100
#---
2、空查找函式: nvl
1.函式描述
回傳值 語法結構 功能描述 T nvl(T value, T default_value) 如果value值為NULL就回傳default_value,否則回傳value
2.例程
hive> select nvl(null,5);
#--
5
#--
3、非空查找函式: COALESCE
1.函式描述
回傳值 語法結構 功能描述 T COALESCE(T v1, T v2,…) 回傳引數中的第一個非空值;如果所有值都為NULL,那么回傳NULL
2.例程
hive> select COALESCE (NULL,44,55);
#--
44
#--
4、條件判斷函式:CASE
1.函式描述
回傳值 語法結構 功能描述 T CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END 如果a等于b,那么回傳c;如果a等于d,那么回傳e;否則回傳f
2.例程
hive> select CASE 4 WHEN 5 THEN 5 WHEN 4 THEN 4 ELSE 3 END;
#--
4
#--
5、條件判斷函式:CASE
1.函式描述
回傳值 語法結構 功能描述 T CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END 如果a為TRUE,則回傳b;如果c為TRUE,則回傳d;否則回傳e
2.例程
hive> select CASE WHEN 5>0 THEN 5 WHEN 4>0 THEN 4 ELSE 0 END;
#--
5
#--
6、空值判斷函式:isnull
1.函式描述
回傳值 語法結構 功能描述 boolean isnull( a ) 如果a為null就回傳true,否則回傳false
2.例程
hive> select isnull(5);
#----
false
#----
7、非空值判斷函式:isnotnull
1.函式描述
回傳值 語法結構 功能描述 boolean isnotnull ( a ) 如果a為非null就回傳true,否則回傳false
2.例程
hive> select isnotnull(5);
#---
true
#---
四、字符函式
1、首字符ascii函式:ascii
1.函式描述
回傳值 語法結構 功能描述 int ascii(string str) 回傳字串str第一個字符的ascii碼
2.例程
hive> select ascii(‘abcde’);
#---
97
#---
2、轉換成64位的字串:base64
1.函式描述
回傳值 語法結構 功能描述 string base64(binary bin) 將二進制bin轉換成64位的字串
3、字串連接函式:concat
1.函式描述
回傳值 語法結構 功能描述 string concat(string A, string B…) 回傳輸入字串連接后的結果,支持任意個輸入字串
2.例程
hive> select concat(‘abc’,‘def’);
#-----
abcdef
#-----
4、字串連接函式:context_ngrams
1.函式描述
回傳值 語法結構 功能描述 array<struct<string,double>> context_ngrams(array, array, int K, int pf) 與ngram類似,但context_ngram()允許你預算指定背景關系(陣列)來去查找子序列,具體看StatisticsAndDataMining(這里的解釋更易懂)
5、帶分隔符字串連接函式:concat_ws
1.函式描述
回傳值 語法結構 功能描述 string concat_ws(string SEP, string A, string B…) | concat_ws(string SEP, array) 回傳輸入字串連接后的結果,SEP表示各個字串間的分隔符
2.例程
hive> select concat_ws(’,’,‘abc’,‘def’,‘gh’);
#---------
abc,def,gh
#---------
6、指定的字符集將二進制值bin解碼成字串:decode
1.函式描述
回傳值 語法結構 功能描述 string decode(binary bin, string charset) 使用指定的字符集charset將二進制值bin解碼成字串,支持的字符集有:‘US-ASCII’, ‘ISO-8859-1’, ‘UTF-8’, ‘UTF-16BE’, ‘UTF-16LE’, ‘UTF-16’,如果任意輸入引數為NULL都將回傳NULL
7、指定的字符集charset將字串編碼成二進制值:encode
1.函式描述
回傳值 語法結構 功能描述 binary encode(string src, string charset) 使用指定的字符集charset將字串編碼成二進制值,支持的字符集有:‘US-ASCII’, ‘ISO-8859-1’, ‘UTF-8’, ‘UTF-16BE’, ‘UTF-16LE’, ‘UTF-16’,如果任一輸入引數為NULL都將回傳NULL
8、集合查找函式:find_in_set
1.函式描述
回傳值 語法結構 功能描述 int find_in_set(string str, string strList) 回傳str在strlist第一次出現的位置,strlist是用逗號分割的字串,如果沒有找該str字符,則回傳0,如果任一引數為NULL將回傳NULL
2.例程
hive> select find_in_set(‘ab’,‘ef,ab,de’);
#--
2
#--
9、將數值X轉換成"#,###,###.##"格式字串:format_number
1.函式描述
回傳值 語法結構 功能描述 string format_number(number x, int d) 將數值X轉換成"#,###,###.##"格式字串,并保留d位小數,如果d為0,將進行四舍五入且不保留小數
2.例程
hive> select format_number(123345.65545,2);
#---------
123,345.66
#---------
10、json決議函式:get_json_object
1.函式描述
回傳值 語法結構 功能描述 string get_json_object(string json_string, string path) 決議json的字串json_string,回傳path指定的內容,如果輸入的json字串無效,那么回傳NULL,注意此路徑上JSON字串只能由數字 字母 下劃線組成且不能有大寫字母和特殊字符,且key不能由數字開頭,這是由于Hive對列名的限制
2.例程
hive> select get_json_object(’{“store”:
> {“fruit”:[{“weight”:8,“type”:“apple”},{“weight”:9,“type”:“pear”}],
> “bicycle”:{“price”:19.95,“color”:“red”}
> },
> “email”:“amy@only_for_json_udf_test.net”,
> “owner”:“amy”
> }
> ‘,’$.owner’);
#---
amy
#---
11、檔案資料與字串str匹配: in_file
1.函式描述
回傳值 語法結構 功能描述 boolean in_file(string str, string filename) 如果檔案名為filename的檔案中有一行資料與字串str匹配成功就回傳true
12、查找字串str中子字串substr出現的位置:instr
1.函式描述
回傳值 語法結構 功能描述 int instr(string str, string substr) 查找字串str中子字串substr出現的位置,如果查找失敗將回傳0,如果任一引數為Null將回傳null,注意位置為從1開始的
2.例程
hive> select instr(‘dvfgefggdgaa’,‘aa’);
#--
11
#--
13、字串長度函式:length
1.函式描述
回傳值 語法結構 功能描述 int length(string A) 回傳字串A的長度
2.例程
hive> select length(‘abcedfg’);
#--
7
#--
14、第一次出現的位置:locate
1.函式描述
回傳值 語法結構 功能描述 int locate(string substr, string str[, int pos]) 查找字串str中的pos位置后字串substr第一次出現的位置
2.例程
hive> select locate(‘aa’,‘aabbedfaad’,2);
#--
8
#--
15、字串轉小寫函式:lower,lcase
1.函式描述
回傳值 語法結構 功能描述 string lower(string A) lcase(string A) 回傳字串A的小寫格式
2.例程
hive> select lower(‘abSEd’);
#----
absed
#----
16、左補足函式:lpad
1.函式描述
回傳值 語法結構 功能描述 string lpad(string str, int len, string pad) 將str進行用pad進行左補足到len位,從左邊開始對字串str使用字串pad填充,最終len長度為止,如果字串str本身長度比len大的話,將去掉多余的部分
2.例程
hive> select lpad(‘abc’,10,‘td’);
#---------
tdtdtdtabc
#---------
注意:與GP,ORACLE不同,pad不能默認
17、左邊去空格函式:ltrim
1.函式描述
回傳值 語法結構 功能描述 string ltrim(string A) 去掉字串A前面的空格
2.例程
hive> select ltrim(’ abc fg ');
#-----
abc fg
#-----
18、回傳出現次數TOP K的的子序列:ngrams
1.函式描述
回傳值 語法結構 功能描述 array<struct<string,double>> ngrams(array, int N, int K, int pf) 回傳出現次數TOP K的的子序列,n表示子序列的長度,具體看StatisticsAndDataMining (這里的解釋更易懂)
19、URL決議函式:parse_url
1.函式描述
回傳值 語法結構 功能描述 string parse_url(string urlString, string partToExtract [, stringkeyToExtract]) 回傳從URL中抽取指定部分的內容,引數url是URL字串,而引數partToExtract是要抽取的部分,這個引數包含(HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO,例如:parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1’, ‘HOST’) =‘facebook.com’,如果引數partToExtract值為QUERY則必須指定第三個引數key 如:parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1’, ‘QUERY’, ‘k1’) =‘v1’
2.例程
hive> select parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1’, ‘HOST’);
#-----------
facebook.com
#-----------
hive> select parse_url(‘http://facebook.com/path1/p.php?k1=v1&k2=v2#Ref1’, ‘QUERY’,‘k1’);
#--
v1
#--
20、printf風格格式輸出字串:printf
1.函式描述
回傳值 語法結構 功能描述 string printf(String format, Obj… args) 按照printf風格格式輸出字串
2.例程
hive> select printf(‘abfhg’);
#----
abfhg
#----
21、正則運算式決議函式:regexp_extract
1.函式描述
回傳值 語法結構 功能描述 string regexp_extract(string subject, string pattern, int index) 將字串subject按照pattern正則運算式的規則拆分,回傳index指定的字符,注意些預定義字符的使用,如第二個引數如果使用’\s’將被匹配到s,’\s’才是匹配空格
2.例程
hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 2);
#---
bar
#---
hive> select regexp_extract(‘foothebar’, ‘foo(.*?)(bar)’, 0);
#--------
foothebar
#--------
hive> select regexp_extract(‘hello,world’,’^((\w+),(\w+))$’,2);
#----
hello
#----
hive> select regexp_extract(‘hello,world’,’(\w+),(\w+)’,2);
#----
world
#----
注意,在有些情況下要使用轉義字符,下面的等號要用雙豎線轉義,這是java正則運算式的規則,
22、正則運算式替換函式:regexp_replace
1.函式描述
回傳值 語法結構 功能描述 string regexp_replace(string A, string B, string C) 按照Java正則運算式PATTERN將字串INTIAL_STRING中符合條件的部分成REPLACEMENT所指定的字串,如里REPLACEMENT這空的話,抽符合正則的部分將被去掉 如:regexp_replace(“foobar”, “oo
2.例程
hive> select regexp_replace(‘hello,world’,‘o|l’,‘e’);
#----------
heeee,wered
#----------
23、重復字串函式:repeat
1.函式描述
回傳值 語法結構 功能描述 string repeat(string str, int n) 回傳重復n次后的str字串
2.例程
hive> select repeat(‘abc’,5);
#--------------
abcabcabcabcabc
#--------------
24、字串反轉函式:reverse
1.函式描述
回傳值 語法結構 功能描述 string reverse(string A) 回傳字串A的反轉結果
2.例程
hive> select reverse(‘abc’);
#--
cba
#--
25、右補足函式:rpad
1.函式描述
回傳值 語法結構 功能描述 string rpad(string str, int len, string pad) 從右邊開始對字串str使用字串pad填充,最終len長度為止,如果字串str本身長度比len大的話,將去掉多余的部分
2.例程
hive> select rpad(‘abc’,10,‘td’);
#---------
abctdtdtdt
#---------
26、右邊去空格函式:rtrim
1.函式描述
回傳值 語法結構 功能描述 string rtrim(string A) 去除字串右邊的空格
2.例程
hive> select rtrim(’ abc ');
#---
abc
#---
27、字串str將被轉換成單詞陣列:sentences
1.函式描述
回傳值 語法結構 功能描述 array sentences(string str, string lang, string locale) 字串str將被轉換成單詞陣列,如:sentences(‘Hello there! How are you?’) =( (“Hello”, “there”), (“How”, “are”, “you”) )
2.例程
hive> select sentences(‘Hello there! How are you?’);
#--------------------------------------
[[“Hello”,“there”],[“How”,“are”,“you”]]
#--------------------------------------
28、空格字串函式:space
1.函式描述
回傳值 語法結構 功能描述 string space(int n) 回傳n個空格
2.例程
hive> select length(space(10));
#--
10
#--
29、分割字串函式: split
1.函式描述
回傳值 語法結構 功能描述 array split(string str, string pat) 按照pat字串分割str,會回傳分割后的字串陣列
2.例程
hive> select split(‘abc|cde,def kyy’,’[\|, ]’);
#------------------------
[“abc”,“cde”,“def”,“kyy”]
#------------------------
hive> select split(‘abtcdtef’,‘t’);
#---------------
[“ab”,“cd”,“ef”]
#---------------
30、字串str按照指定分隔符轉換成Map: split
1.函式描述
回傳值 語法結構 功能描述 map<string,string> str_to_map(text[, delimiter1, delimiter2]) 將字串str按照指定分隔符轉換成Map,第一個引數是需要轉換字串,第二個引數是鍵值對之間的分隔符,默認為逗號;第三個引數是鍵值之間的分隔符,默認為"="
31、字串截取函式:substr,substring
1.函式描述
回傳值 語法結構 功能描述 string substr(string A, int start),substring(string A, int start) 回傳字串A從start位置到結尾的字串
2.例程
hive> select substr(‘abcde’,3);
#---
cde
#---
hive> select substr(‘abcde’,-1); //(和ORACLE相同)
#--
e
#--
32、字串截取函式:substr,substring
1.函式描述
回傳值 語法結構 功能描述 string substr(string A, int start, int len),substring(string A, int start, int len) 回傳字串A從start位置開始,長度為len的字串
2.例程
hive> select substr(‘abcde’,3,2);
#--
cd
#--
33、截取第count分隔符之前的字串:substring_index
1.函式描述
回傳值 語法結構 功能描述 string substring_index(string A, string delim, int count) 截取第count分隔符之前的字串,如count為正則從左邊開始截取,如果為負則從右邊開始截取
34、字串替換成to中的字串:substring_index
1.函式描述
回傳值 語法結構 功能描述 string translate(string|char|varchar input, string|char|varchar from, string|char|varchar to) 將input出現在from中的字串替換成to中的字串 如:translate(“MOBIN”,“BIN”,“M”)=“MOM”
2.例程
hive> select translate(“MOBIN”,“BIN”,“M”);
#---
MOM
#---
35、去空格函式:trim
1.函式描述
回傳值 語法結構 功能描述 string trim(string A) 去除字串兩邊的空格
2.例程
hive> select trim(’ abc dce’);
#------
abc dce
#------
36、將64位的字串轉換二進制值:trim
1.函式描述
回傳值 語法結構 功能描述 binary unbase64(string str) 將64位的字串轉換二進制值
37、字串轉大寫函式:upper,ucase
1.函式描述
回傳值 語法結構 功能描述 string upper(string A) ucase(string A) 將字串A中的字母轉換成大寫字母
2.例程
hive> select upper(‘abSEd’);
#----
ABSED
#----
38、首字母大寫函式:initcap
1.函式描述
回傳值 語法結構 功能描述 string initcap(string A) 將字串A轉換第一個字母大寫其余字母的字串
2.例程
hive> select initcap(‘abcd def’);
#-------
Abcd Def
#-------
39、兩個字串之間的差異大小: levenshtein
1.函式描述
回傳值 語法結構 功能描述 int levenshtein(string A, string B) 計算兩個字串之間的差異大小 如:levenshtein(‘kitten’, ‘sitting’) = 3
2.例程
hive> select levenshtein(‘kitten’, ‘sitting’);
#---
3
#---
40、字串轉換成soundex字串:soundex
1.函式描述
回傳值 語法結構 功能描述 string soundex(string A) 將普通字串轉換成soundex字串
五、聚合函式
1、個數統計函式: count
1.函式描述
回傳值 語法結構 功能描述 bigint count(*), count(expr), count(DISTINCT expr[, expr…]) count(*)統計檢索出的行的個數,包括NULL值的行;count(expr)回傳指定欄位的非空值的個數;count(DISTINCTexpr[, expr_.])統計提供非NULL且去重后的expr運算式值的行數
2、總和統計函式: sum
1.函式描述
回傳值 語法結構 功能描述 double sum(col), sum(DISTINCT col) sum(col)統計結果集中col的相加的結果;sum(DISTINCT col)統計結果中col不同值相加的結果
3、平均值統計函式: avg
1.函式描述
回傳值 語法結構 功能描述 double avg(col), avg(DISTINCT col) avg(col)統計結果集中col的平均值;avg(DISTINCT col)統計結果中col不同值相加的平均值
4、最小值統計函式: min
1.函式描述
回傳值 語法結構 功能描述 double min(col) 統計結果集中col欄位的最小值
5、最大值統計函式: max
1.函式描述
回傳值 語法結構 功能描述 double max(col) 統計結果集中col欄位的最大值
6、非空集合總體變數函式:var_pop
1.函式描述
回傳值 語法結構 功能描述 double variance(col), var_pop(col) 統計結果集中col非空集合的總體變數(忽略null),(求指定列數值的方差)
7、非空集合樣本變數函式:var_samp
1.函式描述
回傳值 語法結構 功能描述 double var_samp (col) 統計結果集中col非空集合的樣本變數(忽略null)(求指定列數值的樣本方差)
8、總體標準偏離函式:stddev_pop
1.函式描述
回傳值 語法結構 功能描述 double stddev_pop(col) 該函式計算總體標準偏離,并回傳總體變數的平方根,其回傳值與VAR_POP函式的平方根相同(求指定列數值的標準偏差)
9、樣本標準偏離函式:stddev_samp
1.函式描述
回傳值 語法結構 功能描述 double stddev_samp (col) 該函式計算樣本標準偏離,(求指定列數值的樣本標準偏差)
10、協方差函式:covar_pop
1.函式描述
回傳值 語法結構 功能描述 double covar_pop(col1, col2) 求指定列數值的協方差
11、樣本協方差函式:covar_samp
1.函式描述
回傳值 語法結構 功能描述 double covar_samp(col1, col2) 求指定列數值的樣本協方差
12、相關系數函式:corr
1.函式描述
回傳值 語法結構 功能描述 double corr(col1, col2) 回傳兩列數值的相關系數
13、中位數函式:percentile
1.函式描述
回傳值 語法結構 功能描述 double percentile(BIGINT col, p) 求準確的第pth個百分位數,p必須介于0和1之間,但是col欄位目前只支持整數,不支持浮點數型別
14、中位數函式:percentile
1.函式描述
回傳值 語法結構 功能描述 array percentile(BIGINT col, array(p1 [, p2]…)) 功能和上述類似,之后后面可以輸入多個百分位數,回傳型別也為array,其中為對應的百分位數
2.例程
select percentile(score,<0.2,0.4>) from lxw_dual;取0.2,0.4位置的資料
15、近似中位數函式:percentile_approx
1.函式描述
回傳值 語法結構 功能描述 double percentile_approx(DOUBLE col, p [, B]) 求近似的第pth個百分位數,p必須介于0和1之間,回傳型別為double,但是col欄位支持浮點型別,引數B控制記憶體消耗的近似精度,B越大,結果的準確度越高,默認為10,000,當col欄位中的distinct值的個數小于B時,結果為準確的百分位數
16、近似中位數函式:percentile_approx
1.函式描述
回傳值 語法結構 功能描述 array percentile_approx(DOUBLE col, array(p1 [, p2]…) [, B]) 功能和上述類似,之后后面可以輸入多個百分位數,回傳型別也為array,其中為對應的百分位數,
17、直方圖:histogram_numeric
1.函式描述
回傳值 語法結構 功能描述 array<struct {‘x’,‘y’}> histogram_numeric(col, b) 以b為基準計算col的直方圖資訊
hive> select histogram_numeric(100,5) 、
#--------------------
[{“x”:100.0,“y”:1.0}]
#--------------------
六、表生成函式
1、explode
1.函式描述
回傳值 語法結構 功能描述 Array Type explode(array a) 對于a中的每個元素,將生成一行且包含該元素
2、explode
1.函式描述
回傳值 語法結構 功能描述 N rows explode(ARRAY) 每行對應陣列中的一個元素
3、explode
1.函式描述
回傳值 語法結構 功能描述 N rows explode(MAP) 每行對應每個map鍵-值,其中一個欄位是map的鍵,另一個欄位是map的值
4、posexplode
1.函式描述
回傳值 語法結構 功能描述 N rows posexplode(ARRAY) 與explode類似,不同的是還回傳各元素在陣列中的位置
5、posexplode
1.函式描述
回傳值 語法結構 功能描述 N rows stack(INT n, v_1, v_2, …, v_k) 把M列轉換成N行,每行有M/N個欄位,其中n必須是個常數
6、posexplode
1.函式描述
回傳值 語法結構 功能描述 tuple json_tuple(jsonStr, k1, k2, …) 從一個JSON字串中獲取多個鍵并作為一個元組回傳,與get_json_object不同的是此函式能一次獲取多個鍵值
7、parse_url_tuple
1.函式描述
回傳值 語法結構 功能描述 tuple parse_url_tuple(url, p1, p2, …) 回傳從URL中抽取指定N部分的內容,引數url是URL字串,而引數p1,p2,…是要抽取的部分,這個引數包含HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, USERINFO, QUERY:
8、parse_url_tuple
1.函式描述
回傳值 語法結構 功能描述 tuple inline(ARRAY<STRUCT[,STRUCT]>) 將結構體陣列提取出來并插入到表中
七、型別轉換函式
1、轉換成二進制: binary
1.函式描述
回傳值 語法結構 功能描述 binary binary(string|binary) 將輸入的值轉換成二進制
2、expr轉換成type型別: cast
1.函式描述
回傳值 語法結構 功能描述 Expected “=” to follow “type” cast(expr as ) 將expr轉換成type型別 如:cast(“1” as BIGINT) 將字串1轉換成了BIGINT型別,如果轉換失敗將回傳NULL
八、集合函式
1、Map型別長度函式: size(Map<K.V>)
1.函式描述
回傳值 語法結構 功能描述 int size(Map<K.V>) 回傳map型別的長度
2.例程
hive> select size(map(‘100’,‘tom’,‘101’,‘mary’));
#--
2
#--
2、array型別長度函式: size(Array)
1.函式描述
回傳值 語法結構 功能描述 int size(Array) 求陣列的長度
2.例程
hive> select size(array(‘100’,‘101’,‘102’,‘103’));
#--
4
#--
3、key函式
1.函式描述
回傳值 語法結構 功能描述 array map_keys(Map<K.V>) 回傳map中的所有key
4、value函式
1.函式描述
回傳值 語法結構 功能描述 array map_keys(Map<K.V>) 回傳map中的所有value
5、包含value函式
1.函式描述
回傳值 語法結構 功能描述 boolean array_contains(Array, value) 如該陣列Array包含value回傳true,,否則回傳false
6、排序函式
1.函式描述
回傳值 語法結構 功能描述 array sort_array(Array) 按自然順序對陣列進行排序并回傳