日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Hive常用函数大全一览

發(fā)布時(shí)間:2025/7/14 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Hive常用函数大全一览 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Hive常用函數(shù)大全一覽

  • 1?關(guān)系運(yùn)算
    • 1.1?1、等值比較: =
    • 1.2?2、不等值比較:
    • 1.3?3、小于比較: <
    • 1.4?4、小于等于比較: <=
    • 1.5?5、大于比較: >
    • 1.6?6、大于等于比較: >=
    • 1.7?7、空值判斷: IS NULL
    • 1.8?8、非空判斷: IS NOT NULL
    • 1.9?9、LIKE比較: LIKE
    • 1.10?10JAVALIKE操作: RLIKE
    • 1.11?11、REGEXP操作: REGEXP
  • 2?數(shù)學(xué)運(yùn)算:
    • 2.1?1、加法操作: +
    • 2.2?2、減法操作: -
    • 2.3?3、乘法操作: *
    • 2.4?4、除法操作: /
    • 2.5?5、取余操作: %
    • 2.6?6、位與操作: &
    • 2.7?7、位或操作: |
    • 2.8?8、位異或操作: ^
    • 2.9?9.位取反操作: ~
  • 3?邏輯運(yùn)算:
    • 3.1?1、邏輯與操作: AND
    • 3.2?2、邏輯或操作: OR
    • 3.3?3、邏輯非操作: NOT
  • 4?數(shù)值計(jì)算
    • 4.1?1、取整函數(shù): round
    • 4.2?2、指定精度取整函數(shù): round
    • 4.3?3、向下取整函數(shù): floor
    • 4.4?4、向上取整函數(shù): ceil
    • 4.5?5、向上取整函數(shù): ceiling
    • 4.6?6、取隨機(jī)數(shù)函數(shù): rand
    • 4.7?7、自然指數(shù)函數(shù): exp
    • 4.8?8、以10為底對(duì)數(shù)函數(shù): log10
    • 4.9?9、以2為底對(duì)數(shù)函數(shù): log2
    • 4.10?10、對(duì)數(shù)函數(shù): log
    • 4.11?11、冪運(yùn)算函數(shù): pow
    • 4.12?12、冪運(yùn)算函數(shù): power
    • 4.13?13、開平方函數(shù): sqrt
    • 4.14?14、二進(jìn)制函數(shù): bin
    • 4.15?15、十六進(jìn)制函數(shù): hex
    • 4.16?16、反轉(zhuǎn)十六進(jìn)制函數(shù): unhex
    • 4.17?17、進(jìn)制轉(zhuǎn)換函數(shù): conv
    • 4.18?18、絕對(duì)值函數(shù): abs
    • 4.19?19、正取余函數(shù): pmod
    • 4.20?20、正弦函數(shù): sin
    • 4.21?21、反正弦函數(shù): asin
    • 4.22?22、余弦函數(shù): cos
    • 4.23?23、反余弦函數(shù): acos
    • 4.24?24、positive函數(shù): positive
    • 4.25?25、negative函數(shù): negative
  • 5?日期函數(shù)
    • 5.1?1、UNIX時(shí)間戳轉(zhuǎn)日期函數(shù): from_unixtime
    • 5.2?2、獲取當(dāng)前UNIX時(shí)間戳函數(shù): unix_timestamp
    • 5.3?3、日期轉(zhuǎn)UNIX時(shí)間戳函數(shù): unix_timestamp
    • 5.4?4、指定格式日期轉(zhuǎn)UNIX時(shí)間戳函數(shù): unix_timestamp
    • 5.5?5、日期時(shí)間轉(zhuǎn)日期函數(shù): to_date
    • 5.6?6、日期轉(zhuǎn)年函數(shù): year
    • 5.7?7、日期轉(zhuǎn)月函數(shù): month
    • 5.8?8、日期轉(zhuǎn)天函數(shù): day
    • 5.9?9、日期轉(zhuǎn)小時(shí)函數(shù): hour
    • 5.10?10、日期轉(zhuǎn)分鐘函數(shù): minute
    • 5.11?11、日期轉(zhuǎn)秒函數(shù): second
    • 5.12?12、日期轉(zhuǎn)周函數(shù): weekofyear
    • 5.13?13、日期比較函數(shù): datediff
    • 5.14?14、日期增加函數(shù): date_add
    • 5.15?15、日期減少函數(shù): date_sub
  • 6?條件函數(shù)
    • 6.1?1、If函數(shù): if
    • 6.2?2、非空查找函數(shù): COALESCE
    • 6.3?3、條件判斷函數(shù):CASE
    • 6.4?4、條件判斷函數(shù):CASE
  • 7?字符串函數(shù)
    • 7.1?1、字符串長度函數(shù):length
    • 7.2?2、字符串反轉(zhuǎn)函數(shù):reverse
    • 7.3?3、字符串連接函數(shù):concat
    • 7.4?4、帶分隔符字符串連接函數(shù):concat_ws
    • 7.5?5、字符串截取函數(shù):substr,substring
    • 7.6?6、字符串截取函數(shù):substr,substring
    • 7.7?7、字符串轉(zhuǎn)大寫函數(shù):upper,ucase
    • 7.8?8、字符串轉(zhuǎn)小寫函數(shù):lower,lcase
    • 7.9?9、去空格函數(shù):trim
    • 7.10?10、左邊去空格函數(shù):ltrim
    • 7.11?11、右邊去空格函數(shù):rtrim
    • 7.12?12、正則表達(dá)式替換函數(shù):regexp_replace
    • 7.13?13、正則表達(dá)式解析函數(shù):regexp_extract
    • 7.14?14URL解析函數(shù):parse_url
    • 7.15?15json解析函數(shù):get_json_object
    • 7.16?16、空格字符串函數(shù):space
    • 7.17?17、重復(fù)字符串函數(shù):repeat
    • 7.18?18、首字符ascii函數(shù):ascii
    • 7.19?19、左補(bǔ)足函數(shù):lpad
    • 7.20?20、右補(bǔ)足函數(shù):rpad
    • 7.21?21、分割字符串函數(shù): split
    • 7.22?22、集合查找函數(shù): find_in_set
  • 8?集合統(tǒng)計(jì)函數(shù)
    • 8.1?1、個(gè)數(shù)統(tǒng)計(jì)函數(shù): count
    • 8.2?2、總和統(tǒng)計(jì)函數(shù): sum
    • 8.3?3、平均值統(tǒng)計(jì)函數(shù): avg
    • 8.4?4、最小值統(tǒng)計(jì)函數(shù): min
    • 8.5?5、最大值統(tǒng)計(jì)函數(shù): max
    • 8.6?6、非空集合總體變量函數(shù): var_pop
    • 8.7?7、非空集合樣本變量函數(shù): var_samp
    • 8.8?8、總體標(biāo)準(zhǔn)偏離函數(shù): stddev_pop
    • 8.9?9、樣本標(biāo)準(zhǔn)偏離函數(shù): stddev_samp
    • 8.10?10.中位數(shù)函數(shù): percentile
    • 8.11?11、中位數(shù)函數(shù): percentile
    • 8.12?12、近似中位數(shù)函數(shù): percentile_approx
    • 8.13?13、近似中位數(shù)函數(shù): percentile_approx
    • 8.14?14、直方圖: histogram_numeric
  • 9?復(fù)合類型構(gòu)建操作
    • 9.1?1、Map類型構(gòu)建: map
    • 9.2?2Struct類型構(gòu)建: struct
    • 9.3?3、array類型構(gòu)建: array
  • 10?復(fù)雜類型訪問操作
    • 10.1?1、array類型訪問: A[n]
    • 10.2?2、map類型訪問: M[key]
    • 10.3?3struct類型訪問: S.x
  • 11?復(fù)雜類型長度統(tǒng)計(jì)函數(shù)
    • 11.1?1.Map類型長度函數(shù): size(Map<k .V>)
    • 11.2?2.array類型長度函數(shù): size(Array<T>)
    • 11.3?3.類型轉(zhuǎn)換函數(shù)

關(guān)系運(yùn)算

1、等值比較: =

語法A=B
操作類型:所有基本類型
描述: 如果表達(dá)式A與表達(dá)式B相等,則為TRUE;否則為FALSE

hive> select?1 from?iteblog where?1=1;

1

2、不等值比較: <>

語法: A <> B
操作類型: 所有基本類型
描述: 如果表達(dá)式ANULL,或者表達(dá)式BNULL,返回NULL;如果表達(dá)式A與表達(dá)式B不相等,則為TRUE;否則為FALSE

hive> select?1 from?iteblog where?1 <> 2;

1

3、小于比較: <

語法: A < B
操作類型:所有基本類型
描述: 如果表達(dá)式ANULL,或者表達(dá)式BNULL,返回NULL;如果表達(dá)式A小于表達(dá)式B,則為TRUE;否則為FALSE

hive> select?1 from?iteblog where?1 < 2;

1

4、小于等于比較: <=

語法: A <= B
操作類型: 所有基本類型
描述: 如果表達(dá)式ANULL,或者表達(dá)式BNULL,返回NULL;如果表達(dá)式A小于或者等于表達(dá)式B,則為TRUE;否則為FALSE

hive> select?1 from?iteblog where?1 < = 1;

1

5、大于比較: >

語法: A > B
操作類型: 所有基本類型
描述: 如果表達(dá)式ANULL,或者表達(dá)式BNULL,返回NULL;如果表達(dá)式A大于表達(dá)式B,則為TRUE;否則為FALSE

hive> select?1 from?iteblog where?2 > 1;

1

6、大于等于比較: >=

語法: A >= B
操作類型: 所有基本類型
描述: 如果表達(dá)式ANULL,或者表達(dá)式BNULL,返回NULL;如果表達(dá)式A大于或者等于表達(dá)式B,則為TRUE;否則為FALSE

hive> select?1 from?iteblog where?1 >= 1;

1

注意String的比較要注意(常用的時(shí)間比較可以先?to_date?之后再比較)

hive> select?* from?iteblog;

OK

2011111209 00:00:00???? 2011111209

?

hive> select?a, b, a<b, a>b, a=b from?iteblog;

2011111209 00:00:00???? 2011111209????? false?? true??? false

7、空值判斷: IS NULL

語法: A IS NULL
操作類型: 所有類型
描述: 如果表達(dá)式A的值為NULL,則為TRUE;否則為FALSE

hive> select?1 from?iteblog where?null?is?null;

1

8、非空判斷: IS NOT NULL

語法: A IS NOT NULL
操作類型: 所有類型
描述: 如果表達(dá)式A的值為NULL,則為FALSE;否則為TRUE

hive> select?1 from?iteblog where?1 is?not?null;

1

9、LIKE比較: LIKE

語法: A LIKE B
操作類型: strings
描述: 如果字符串A或者字符串BNULL,則返回NULL;如果字符串A符合表達(dá)式B 的正則語法,則為TRUE;否則為FALSE。B中字符”_”表示任意單個(gè)字符,而字符”%”表示任意數(shù)量的字符。

hive> select?1 from?iteblog where?'football'?like?'foot%';

1

hive> select?1 from?iteblog where?'football'?like?'foot____';

1

<strong>注意:否定比較時(shí)候用NOT?A LIKE?B</strong>

hive> select?1 from?iteblog where?NOT?'football'?like?'fff%';

1

10、JAVA的LIKE操作: RLIKE

語法: A RLIKE B
操作類型: strings
描述: 如果字符串A或者字符串BNULL,則返回NULL;如果字符串A符合JAVA正則表達(dá)式B的正則語法,則為TRUE;否則為FALSE

hive> select?1 from?iteblog where?'footbar’ rlike '^f.*r$’;

1

注意:判斷一個(gè)字符串是否全為數(shù)字:

hive>select?1 from?iteblog where?'123456'?rlike '^\\d+$';

1

hive> select?1 from?iteblog where?'123456aa'?rlike '^\\d+$';

11、REGEXP操作: REGEXP

語法: A REGEXP B
操作類型: strings
描述: 功能與RLIKE相同

hive> select?1 from?iteblog where?'footbar'?REGEXP '^f.*r$';

1

數(shù)學(xué)運(yùn)算:

1、加法操作: +

語法: A + B
操作類型:所有數(shù)值類型
說明:返回AB相加的結(jié)果。結(jié)果的數(shù)值類型等于A的類型和B的類型的最小父類型(詳見數(shù)據(jù)類型的繼承關(guān)系)。比如,int + int 一般結(jié)果為int類型,而 int + double 一般結(jié)果為double類型

hive> select?1 + 9 from?iteblog;

10

hive> create?table?iteblog as?select?1 + 1.2 from?iteblog;

hive> describe iteblog;

_c0???? double

2、減法操作: -

語法: A – B
操作類型:所有數(shù)值類型
說明:返回AB相減的結(jié)果。結(jié)果的數(shù)值類型等于A的類型和B的類型的最小父類型(詳見數(shù)據(jù)類型的繼承關(guān)系)。比如,int – int 一般結(jié)果為int類型,而 int – double 一般結(jié)果為double類型

hive> select?10 – 5 from?iteblog;

5

hive> create?table?iteblog as?select?5.6 – 4 from?iteblog;

hive> describe iteblog;

_c0???? double

3、乘法操作: *

語法: A * B
操作類型:所有數(shù)值類型
說明:返回AB相乘的結(jié)果。結(jié)果的數(shù)值類型等于A的類型和B的類型的最小父類型(詳見數(shù)據(jù)類型的繼承關(guān)系)。注意,如果A乘以B的結(jié)果超過默認(rèn)結(jié)果類型的數(shù)值范圍,則需要通過cast將結(jié)果轉(zhuǎn)換成范圍更大的數(shù)值類型

hive> select?40 * 5 from?iteblog;

200

4、除法操作: /

語法: A / B
操作類型:所有數(shù)值類型
說明:返回A除以B的結(jié)果。結(jié)果的數(shù)值類型為double

hive> select?40 / 5 from?iteblog;

8.0

注意hive中最高精度的數(shù)據(jù)類型是double,只精確到小數(shù)點(diǎn)后16位,在做除法運(yùn)算的時(shí)候要特別注意

hive>select?ceil(28.0/6.999999999999999999999) from?iteblog limit 1;???

結(jié)果為4

hive>select?ceil(28.0/6.99999999999999) from?iteblog limit 1;??????????

結(jié)果為5

5、取余操作: %

語法: A % B
操作類型:所有數(shù)值類型
說明:返回A除以B的余數(shù)。結(jié)果的數(shù)值類型等于A的類型和B的類型的最小父類型(詳見數(shù)據(jù)類型的繼承關(guān)系)。

hive> select?41 % 5 from?iteblog;

1

hive> select?8.4 % 4 from?iteblog;

0.40000000000000036

<strong>注意</strong>:精度在hive中是個(gè)很大的問題,類似這樣的操作最好通過round指定精度

hive> select?round(8.4 % 4 , 2) from?iteblog;

0.4

6、位與操作: &

語法: A & B
操作類型:所有數(shù)值類型
說明:返回AB按位進(jìn)行與操作的結(jié)果。結(jié)果的數(shù)值類型等于A的類型和B的類型的最小父類型(詳見數(shù)據(jù)類型的繼承關(guān)系)。

hive> select?4 & 8 from?iteblog;

0

hive> select?6 & 4 from?iteblog;

4

7、位或操作: |

語法: A | B
操作類型:所有數(shù)值類型
說明:返回AB按位進(jìn)行或操作的結(jié)果。結(jié)果的數(shù)值類型等于A的類型和B的類型的最小父類型(詳見數(shù)據(jù)類型的繼承關(guān)系)。

hive> select?4 | 8 from?iteblog;

12

hive> select?6 | 8 from?iteblog;

14

8、位異或操作: ^

語法: A ^ B
操作類型:所有數(shù)值類型
說明:返回AB按位進(jìn)行異或操作的結(jié)果。結(jié)果的數(shù)值類型等于A的類型和B的類型的最小父類型(詳見數(shù)據(jù)類型的繼承關(guān)系)。

hive> select?4 ^ 8 from?iteblog;

12

hive> select?6 ^ 4 from?iteblog;

2

9.位取反操作: ~

語法: ~A
操作類型:所有數(shù)值類型
說明:返回A按位取反操作的結(jié)果。結(jié)果的數(shù)值類型等于A的類型。

hive> select?~6 from?iteblog;

-7

hive> select?~4 from?iteblog;

-5

邏輯運(yùn)算:

1、邏輯與操作: AND

語法: A AND B
操作類型boolean
說明:如果AB均為TRUE,則為TRUE;否則為FALSE。如果ANULLBNULL,則為NULL

hive> select?1 from?iteblog where?1=1 and?2=2;

1

2、邏輯或操作: OR

語法: A OR B
操作類型boolean
說明:如果ATRUE,或者BTRUE,或者AB均為TRUE,則為TRUE;否則為FALSE

hive> select?1 from?iteblog where?1=2 or?2=2;

1

3、邏輯非操作: NOT

語法: NOT A
操作類型boolean
說明:如果AFALSE,或者ANULL,則為TRUE;否則為FALSE

hive> select?1 from?iteblog where?not?1=2;

1

數(shù)值計(jì)算

1、取整函數(shù): round

語法: round(double a)
返回值: BIGINT
說明: 返回double類型的整數(shù)值部分 (遵循四舍五入)

hive> select?round(3.1415926) from?iteblog;

3

hive> select?round(3.5) from?iteblog;

4

hive> create?table?iteblog as?select?round(9542.158) from?iteblog;

hive> describe iteblog;

_c0???? bigint

2、指定精度取整函數(shù): round

語法: round(double a, int d)
返回值: DOUBLE
說明: 返回指定精度ddouble類型

hive> select?round(3.1415926,4) from?iteblog;

3.1416

3、向下取整函數(shù): floor

語法: floor(double a)
返回值: BIGINT
說明: 返回等于或者小于該double變量的最大的整數(shù)

hive> select?floor(3.1415926) from?iteblog;

3

hive> select?floor(25) from?iteblog;

25

4、向上取整函數(shù): ceil

語法: ceil(double a)
返回值: BIGINT
說明: 返回等于或者大于該double變量的最小的整數(shù)

hive> select?ceil(3.1415926) from?iteblog;

4

hive> select?ceil(46) from?iteblog;

46

5、向上取整函數(shù): ceiling

語法: ceiling(double a)
返回值: BIGINT
說明: ceil功能相同

hive> select?ceiling(3.1415926) from?iteblog;

4

hive> select?ceiling(46) from?iteblog;

46

6、取隨機(jī)數(shù)函數(shù): rand

語法: rand(),rand(int seed)
返回值: double
說明: 返回一個(gè)01范圍內(nèi)的隨機(jī)數(shù)。如果指定種子seed,則會(huì)等到一個(gè)穩(wěn)定的隨機(jī)數(shù)序列

hive> select?rand() from?iteblog;

0.5577432776034763

hive> select?rand() from?iteblog;

0.6638336467363424

hive> select?rand(100) from?iteblog;

0.7220096548596434

hive> select?rand(100) from?iteblog;

0.7220096548596434

7、自然指數(shù)函數(shù): exp

語法: exp(double a)
返回值: double
說明: 返回自然對(duì)數(shù)ea次方

hive> select?exp(2) from?iteblog;

7.38905609893065

<strong>自然對(duì)數(shù)函數(shù)</strong>: ln

<strong>語法</strong>: ln(double?a)

<strong>返回值</strong>: double

<strong>說明</strong>: 返回a的自然對(duì)數(shù)

1

hive> select?ln(7.38905609893065) from?iteblog;

2.0

8、以10為底對(duì)數(shù)函數(shù): log10

語法: log10(double a)
返回值: double
說明: 返回以10為底的a的對(duì)數(shù)

hive> select?log10(100) from?iteblog;

2.0

9、以2為底對(duì)數(shù)函數(shù): log2

語法: log2(double a)
返回值: double
說明: 返回以2為底的a的對(duì)數(shù)

hive> select?log2(8) from?iteblog;

3.0

10、對(duì)數(shù)函數(shù): log

語法: log(double base, double a)
返回值: double
說明: 返回以base為底的a的對(duì)數(shù)

hive> select?log(4,256) from?iteblog;

4.0

11、冪運(yùn)算函數(shù): pow

語法: pow(double a, double p)
返回值: double
說明: 返回ap次冪

hive> select?pow(2,4) from?iteblog;

16.0

12、冪運(yùn)算函數(shù): power

語法: power(double a, double p)
返回值: double
說明: 返回ap次冪,pow功能相同

hive> select?power(2,4) from?iteblog;

16.0

13、開平方函數(shù): sqrt

語法: sqrt(double a)
返回值: double
說明: 返回a的平方根

hive> select?sqrt(16) from?iteblog;

4.0

14、二進(jìn)制函數(shù): bin

語法: bin(BIGINT a)
返回值: string
說明: 返回a的二進(jìn)制代碼表示

hive> select?bin(7) from?iteblog;

111

15、十六進(jìn)制函數(shù): hex

語法: hex(BIGINT a)
返回值: string
說明: 如果變量是int類型,那么返回a的十六進(jìn)制表示;如果變量是string類型,則返回該字符串的十六進(jìn)制表示

hive> select?hex(17) from?iteblog;

11

hive> select?hex(‘a(chǎn)bc’) from?iteblog;

616263

16、反轉(zhuǎn)十六進(jìn)制函數(shù): unhex

語法: unhex(string a)
返回值: string
說明: 返回該十六進(jìn)制字符串所代碼的字符串

hive> select?unhex(‘616263’) from?iteblog;

abc

hive> select?unhex(‘11’) from?iteblog;

-

hive> select?unhex(616263) from?iteblog;

abc

17、進(jìn)制轉(zhuǎn)換函數(shù): conv

語法: conv(BIGINT num, int from_base, int to_base)
返回值: string
說明: 將數(shù)值numfrom_base進(jìn)制轉(zhuǎn)化到to_base進(jìn)制

hive> select?conv(17,10,16) from?iteblog;

11

hive> select?conv(17,10,2) from?iteblog;

10001

18、絕對(duì)值函數(shù): abs

語法: abs(double a) abs(int a)
返回值: double int
說明: 返回?cái)?shù)值a的絕對(duì)值

hive> select?abs(-3.9) from?iteblog;

3.9

hive> select?abs(10.9) from?iteblog;

10.9

19、正取余函數(shù): pmod

語法: pmod(int a, int b),pmod(double a, double b)
返回值: int double
說明: 返回正的a除以b的余數(shù)

hive> select?pmod(9,4) from?iteblog;

1

hive> select?pmod(-9,4) from?iteblog;

3

20、正弦函數(shù): sin

語法: sin(double a)
返回值: double
說明: 返回a的正弦值

hive> select?sin(0.8) from?iteblog;

0.7173560908995228

21、反正弦函數(shù): asin

語法: asin(double a)
返回值: double
說明: 返回a的反正弦值

hive> select?asin(0.7173560908995228) from?iteblog;

0.8

22、余弦函數(shù): cos

語法: cos(double a)
返回值: double
說明: 返回a的余弦值

hive> select?cos(0.9) from?iteblog;

0.6216099682706644

23、反余弦函數(shù): acos

語法: acos(double a)
返回值: double
說明: 返回a的反余弦值

hive> select?acos(0.6216099682706644) from?iteblog;

0.9

24、positive函數(shù): positive

語法: positive(int a), positive(double a)
返回值: int double
說明: 返回a

hive> select?positive(-10) from?iteblog;

-10

hive> select?positive(12) from?iteblog;

12

25、negative函數(shù): negative

語法: negative(int a), negative(double a)
返回值: int double
說明: 返回-a

hive> select?negative(-5) from?iteblog;

5

hive> select?negative(8) from?iteblog;

-8

日期函數(shù)

1、UNIX時(shí)間戳轉(zhuǎn)日期函數(shù): from_unixtime

語法: from_unixtime(bigint unixtime[, string format])
返回值: string
說明: 轉(zhuǎn)化UNIX時(shí)間戳(從1970-01-01 00:00:00 UTC到指定時(shí)間的秒數(shù))到當(dāng)前時(shí)區(qū)的時(shí)間格式

hive> select?from_unixtime(1323308943,'yyyyMMdd') from?iteblog;

20111208

2、獲取當(dāng)前UNIX時(shí)間戳函數(shù): unix_timestamp

語法: unix_timestamp()
返回值: bigint
說明: 獲得當(dāng)前時(shí)區(qū)的UNIX時(shí)間戳

hive> select?unix_timestamp() from?iteblog;

1323309615

3、日期轉(zhuǎn)UNIX時(shí)間戳函數(shù): unix_timestamp

語法: unix_timestamp(string date)
返回值: bigint
說明: 轉(zhuǎn)換格式為"yyyy-MM-dd HH:mm:ss"的日期到UNIX時(shí)間戳。如果轉(zhuǎn)化失敗,則返回0

hive> select?unix_timestamp('2011-12-07 13:01:03') from?iteblog;

1323234063

4、指定格式日期轉(zhuǎn)UNIX時(shí)間戳函數(shù): unix_timestamp

語法: unix_timestamp(string date, string pattern)
返回值: bigint
說明: 轉(zhuǎn)換pattern格式的日期到UNIX時(shí)間戳。如果轉(zhuǎn)化失敗,則返回0。

hive> select?unix_timestamp('20111207 13:01:03','yyyyMMdd HH:mm:ss') from?iteblog;

1323234063

5、日期時(shí)間轉(zhuǎn)日期函數(shù): to_date

語法: to_date(string timestamp)
返回值: string
說明: 返回日期時(shí)間字段中的日期部分。

hive> select?to_date('2011-12-08 10:03:01') from?iteblog;

2011-12-08

6、日期轉(zhuǎn)年函數(shù): year

語法: year(string date)
返回值: int
說明: 返回日期中的年。

hive> select?year('2011-12-08 10:03:01') from?iteblog;

2011

hive> select?year('2012-12-08') from?iteblog;

2012

7、日期轉(zhuǎn)月函數(shù): month

語法: month (string date)
返回值: int
說明: 返回日期中的月份。

hive> select?month('2011-12-08 10:03:01') from?iteblog;

12

hive> select?month('2011-08-08') from?iteblog;

8

8、日期轉(zhuǎn)天函數(shù): day

語法: day (string date)
返回值: int
說明: 返回日期中的天。

hive> select?day('2011-12-08 10:03:01') from?iteblog;

8

hive> select?day('2011-12-24') from?iteblog;

24

9、日期轉(zhuǎn)小時(shí)函數(shù): hour

語法: hour (string date)
返回值: int
說明: 返回日期中的小時(shí)。

hive> select?hour('2011-12-08 10:03:01') from?iteblog;

10

10、日期轉(zhuǎn)分鐘函數(shù): minute

語法: minute (string date)
返回值: int
說明: 返回日期中的分鐘。

hive> select?minute('2011-12-08 10:03:01') from?iteblog;

3

11、日期轉(zhuǎn)秒函數(shù): second

語法: second (string date)
返回值: int
說明: 返回日期中的秒。

hive> select?second('2011-12-08 10:03:01') from?iteblog;

1

12、日期轉(zhuǎn)周函數(shù): weekofyear

語法: weekofyear (string date)
返回值: int
說明: 返回日期在當(dāng)前的周數(shù)。

hive> select?weekofyear('2011-12-08 10:03:01') from?iteblog;

49

13、日期比較函數(shù): datediff

語法: datediff(string enddate, string startdate)
返回值: int
說明: 返回結(jié)束日期減去開始日期的天數(shù)。

hive> select?datediff('2012-12-08','2012-05-09') from?iteblog;

213

14、日期增加函數(shù): date_add

語法: date_add(string startdate, int days)
返回值: string
說明: 返回開始日期startdate增加days天后的日期。

hive> select?date_add('2012-12-08',10) from?iteblog;

2012-12-18

15、日期減少函數(shù): date_sub

語法: date_sub (string startdate, int days)
返回值: string
說明: 返回開始日期startdate減少days天后的日期。

hive> select?date_sub('2012-12-08',10) from?iteblog;

2012-11-28

條件函數(shù)

1、If函數(shù): if

語法: if(boolean testCondition, T valueTrue, T valueFalseOrNull)
返回值: T
說明: 當(dāng)條件testConditionTRUE時(shí),返回valueTrue;否則返回valueFalseOrNull

hive> select?if(1=2,100,200) from?iteblog;

200

hive> select?if(1=1,100,200) from?iteblog;

100

2、非空查找函數(shù): COALESCE

語法: COALESCE(T v1, T v2, …)
返回值: T
說明: 返回參數(shù)中的第一個(gè)非空值;如果所有值都為NULL,那么返回NULL

hive> select?COALESCE(null,'100','50′) from?iteblog;

100

3、條件判斷函數(shù):CASE

語法: CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END
返回值: T
說明:如果a等于b,那么返回c;如果a等于d,那么返回e;否則返回f

hive> Select?case?100 when?50 then?'tom'?when?100 then?'mary'?else?'tim'?end?from?iteblog;

mary

hive> Select?case?200 when?50 then?'tom'?when?100 then?'mary'?else?'tim'?end?from?iteblog;

tim

4、條件判斷函數(shù):CASE

語法: CASE WHEN a THEN b [WHEN c THEN d]* [ELSE e] END
返回值: T
說明:如果aTRUE,則返回b;如果cTRUE,則返回d;否則返回e

hive> select?case?when?1=2 then?'tom'?when?2=2 then?'mary'?else?'tim'?end?from?iteblog;

mary

hive> select?case?when?1=1 then?'tom'?when?2=2 then?'mary'?else?'tim'?end?from?iteblog;

tom

字符串函數(shù)

1、字符串長度函數(shù):length

語法: length(string A)
返回值: int
說明:返回字符串A的長度

hive> select?length('abcedfg') from?iteblog;

7

2、字符串反轉(zhuǎn)函數(shù):reverse

語法: reverse(string A)
返回值: string
說明:返回字符串A的反轉(zhuǎn)結(jié)果

hive> select?reverse(abcedfg’) from?iteblog;

gfdecba

3、字符串連接函數(shù):concat

語法: concat(string A, string B…)
返回值: string
說明:返回輸入字符串連接后的結(jié)果,支持任意個(gè)輸入字符串

hive> select?concat(‘a(chǎn)bc’,'def’,'gh’) from?iteblog;

abcdefgh

4、帶分隔符字符串連接函數(shù):concat_ws

語法: concat_ws(string SEP, string A, string B…)
返回值: string
說明:返回輸入字符串連接后的結(jié)果,SEP表示各個(gè)字符串間的分隔符

hive> select?concat_ws(',','abc','def','gh') from?iteblog;

abc,def,gh

5、字符串截取函數(shù):substr,substring

語法: substr(string A, int start),substring(string A, int start)
返回值: string
說明:返回字符串Astart位置到結(jié)尾的字符串

hive> select?substr('abcde',3) from?iteblog;

cde

hive> select?substring('abcde',3) from?iteblog;

cde

hive>? select?substr('abcde',-1) from?iteblog;? (和ORACLE相同)

e

6、字符串截取函數(shù):substr,substring

語法: substr(string A, int start, int len),substring(string A, int start, int len)
返回值: string
說明:返回字符串Astart位置開始,長度為len的字符串

hive> select?substr('abcde',3,2) from?iteblog;

cd

hive> select?substring('abcde',3,2) from?iteblog;

cd

hive>select?substring('abcde',-2,2) from?iteblog;

de

7、字符串轉(zhuǎn)大寫函數(shù):upper,ucase

語法: upper(string A) ucase(string A)
返回值: string
說明:返回字符串A的大寫格式

hive> select?upper('abSEd') from?iteblog;

ABSED

hive> select?ucase('abSEd') from?iteblog;

ABSED

8、字符串轉(zhuǎn)小寫函數(shù):lower,lcase

語法: lower(string A) lcase(string A)
返回值: string
說明:返回字符串A的小寫格式

hive> select?lower('abSEd') from?iteblog;

absed

hive> select?lcase('abSEd') from?iteblog;

absed

9、去空格函數(shù):trim

語法: trim(string A)
返回值: string
說明:去除字符串兩邊的空格

hive> select?trim(' abc ') from?iteblog;

abc

10、左邊去空格函數(shù):ltrim

語法: ltrim(string A)
返回值: string
說明:去除字符串左邊的空格

hive> select?ltrim(' abc ') from?iteblog;

abc

11、右邊去空格函數(shù):rtrim

語法: rtrim(string A)
返回值: string
說明:去除字符串右邊的空格

hive> select?rtrim(' abc ') from?iteblog;

abc

12、正則表達(dá)式替換函數(shù):regexp_replace

語法: regexp_replace(string A, string B, string C)
返回值: string
說明:將字符串A中的符合java正則表達(dá)式B的部分替換為C。注意,在有些情況下要使用轉(zhuǎn)義字符,類似oracle中的regexp_replace函數(shù)。

hive> select?regexp_replace('foobar', 'oo|ar', '') from?iteblog;

fb

13、正則表達(dá)式解析函數(shù):regexp_extract

語法: regexp_extract(string subject, string pattern, int index)
返回值: string
說明:將字符串subject按照pattern正則表達(dá)式的規(guī)則拆分,返回index指定的字符。

hive> select?regexp_extract('foothebar', 'foo(.*?)(bar)', 1) from?iteblog;

the

hive> select?regexp_extract('foothebar', 'foo(.*?)(bar)', 2) from?iteblog;

bar

hive> select?regexp_extract('foothebar', 'foo(.*?)(bar)', 0) from?iteblog;

foothebar

strong>注意,在有些情況下要使用轉(zhuǎn)義字符,下面的等號(hào)要用雙豎線轉(zhuǎn)義,這是java正則表達(dá)式的規(guī)則。

select?data_field,

??regexp_extract(data_field,'.*?bgStart\\=([^&]+)',1) as?aaa,

??regexp_extract(data_field,'.*?contentLoaded_headStart\\=([^&]+)',1) as?bbb,

??regexp_extract(data_field,'.*?AppLoad2Req\\=([^&]+)',1) as?ccc

??from?pt_nginx_loginlog_st

??where?pt = '2012-03-26'?limit 2;

14、URL解析函數(shù):parse_url

語法: parse_url(string urlString, string partToExtract [, string keyToExtract])
返回值: string
說明:返回URL中指定的部分。partToExtract的有效值為:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.

hive> select?parse_url('https://www.iteblog.com/path1/p.php?k1=v1&k2=v2#Ref1', 'HOST') from?iteblog;

facebook.com

hive> select?parse_url('https://www.iteblog.com/path1/p.php?k1=v1&k2=v2#Ref1', 'QUERY', 'k1') from?iteblog;

v1

15、json解析函數(shù):get_json_object

語法: get_json_object(string json_string, string path)
返回值: string
說明:解析json的字符串json_string,返回path指定的內(nèi)容。如果輸入的json字符串無效,那么返回NULL

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') from?iteblog;

amy

16、空格字符串函數(shù):space

語法: space(int n)
返回值: string
說明:返回長度為n的字符串

hive> select?space(10) from?iteblog;

hive> select?length(space(10)) from?iteblog;

10

17、重復(fù)字符串函數(shù):repeat

語法: repeat(string str, int n)
返回值: string
說明:返回重復(fù)n次后的str字符串

hive> select?repeat('abc',5) from?iteblog;

abcabcabcabcabc

18、首字符ascii函數(shù):ascii

語法: ascii(string str)
返回值: int
說明:返回字符串str第一個(gè)字符的ascii

hive> select?ascii('abcde') from?iteblog;

97

19、左補(bǔ)足函數(shù):lpad

語法: lpad(string str, int len, string pad)
返回值: string
說明:將str進(jìn)行用pad進(jìn)行左補(bǔ)足到len

hive> select?lpad('abc',10,'td') from?iteblog;

tdtdtdtabc

注意:與GP,ORACLE不同,pad 不能默認(rèn)

20、右補(bǔ)足函數(shù):rpad

語法: rpad(string str, int len, string pad)
返回值: string
說明:將str進(jìn)行用pad進(jìn)行右補(bǔ)足到len

hive> select?rpad('abc',10,'td') from?iteblog;

abctdtdtdt

21、分割字符串函數(shù): split

語法: split(string str, string pat)
返回值: array
說明: 按照pat字符串分割str,會(huì)返回分割后的字符串?dāng)?shù)組

hive> select?split('abtcdtef','t') from?iteblog;

["ab","cd","ef"]

22、集合查找函數(shù): find_in_set

語法: find_in_set(string str, string strList)
返回值: int
說明: 返回strstrlist第一次出現(xiàn)的位置,strlist是用逗號(hào)分割的字符串。如果沒有找該str字符,則返回0

hive> select?find_in_set('ab','ef,ab,de') from?iteblog;

2

hive> select?find_in_set('at','ef,ab,de') from?iteblog;

0

集合統(tǒng)計(jì)函數(shù)

1、個(gè)數(shù)統(tǒng)計(jì)函數(shù): count

語法: count(*), count(expr), count(DISTINCT expr[, expr_.])
返回值: int
說明: count(*)統(tǒng)計(jì)檢索出的行的個(gè)數(shù),包括NULL值的行;count(expr)返回指定字段的非空值的個(gè)數(shù);count(DISTINCT expr[, expr_.])返回指定字段的不同的非空值的個(gè)數(shù)

hive> select?count(*) from?iteblog;

20

hive> select?count(distinct?t) from?iteblog;

10

2、總和統(tǒng)計(jì)函數(shù): sum

語法: sum(col), sum(DISTINCT col)
返回值: double
說明: sum(col)統(tǒng)計(jì)結(jié)果集中col的相加的結(jié)果;sum(DISTINCT col)統(tǒng)計(jì)結(jié)果中col不同值相加的結(jié)果

hive> select?sum(t) from?iteblog;

100

hive> select?sum(distinct?t) from?iteblog;

70

3、平均值統(tǒng)計(jì)函數(shù): avg

語法: avg(col), avg(DISTINCT col)
返回值: double
說明: avg(col)統(tǒng)計(jì)結(jié)果集中col的平均值;avg(DISTINCT col)統(tǒng)計(jì)結(jié)果中col不同值相加的平均值

hive> select?avg(t) from?iteblog;

50

hive> select?avg?(distinct?t) from?iteblog;

30

4、最小值統(tǒng)計(jì)函數(shù): min

語法: min(col)
返回值: double
說明: 統(tǒng)計(jì)結(jié)果集中col字段的最小值

hive> select?min(t) from?iteblog;

20

5、最大值統(tǒng)計(jì)函數(shù): max

語法: maxcol)
返回值: double
說明: 統(tǒng)計(jì)結(jié)果集中col字段的最大值

hive> select?max(t) from?iteblog;

120

6、非空集合總體變量函數(shù): var_pop

語法: var_pop(col)
返回值: double
說明: 統(tǒng)計(jì)結(jié)果集中col非空集合的總體變量(忽略null

7、非空集合樣本變量函數(shù): var_samp

語法: var_samp (col)
返回值: double
說明: 統(tǒng)計(jì)結(jié)果集中col非空集合的樣本變量(忽略null

8、總體標(biāo)準(zhǔn)偏離函數(shù): stddev_pop

語法: stddev_pop(col)
返回值: double
說明: 該函數(shù)計(jì)算總體標(biāo)準(zhǔn)偏離,并返回總體變量的平方根,其返回值與VAR_POP函數(shù)的平方根相同

9、樣本標(biāo)準(zhǔn)偏離函數(shù): stddev_samp

語法: stddev_samp (col)
返回值: double
說明: 該函數(shù)計(jì)算樣本標(biāo)準(zhǔn)偏離

10.中位數(shù)函數(shù): percentile

語法: percentile(BIGINT col, p)
返回值: double
說明: 求準(zhǔn)確的第pth個(gè)百分位數(shù),p必須介于01之間,但是col字段目前只支持整數(shù),不支持浮點(diǎn)數(shù)類型

11、中位數(shù)函數(shù): percentile

語法: percentile(BIGINT col, array(p1 [, p2]…))
返回值: array<double>
說明: 功能和上述類似,之后后面可以輸入多個(gè)百分位數(shù),返回類型也為array<double>,其中為對(duì)應(yīng)的百分位數(shù)。

select?percentile(score,<0.2,0.4>) from?iteblog; 取0.2,0.4位置的數(shù)據(jù)

12、近似中位數(shù)函數(shù): percentile_approx

語法: percentile_approx(DOUBLE col, p [, B])
返回值: double
說明: 求近似的第pth個(gè)百分位數(shù),p必須介于01之間,返回類型為double,但是col字段支持浮點(diǎn)類型。參數(shù)B控制內(nèi)存消耗的近似精度,B越大,結(jié)果的準(zhǔn)確度越高。默認(rèn)為10,000。當(dāng)col字段中的distinct值的個(gè)數(shù)小于B時(shí),結(jié)果為準(zhǔn)確的百分位數(shù)

13、近似中位數(shù)函數(shù): percentile_approx

語法: percentile_approx(DOUBLE col, array(p1 [, p2]…) [, B])
返回值: array<double>
說明: 功能和上述類似,之后后面可以輸入多個(gè)百分位數(shù),返回類型也為array<double>,其中為對(duì)應(yīng)的百分位數(shù)。

14、直方圖: histogram_numeric

語法: histogram_numeric(col, b)
返回值: array<struct {‘x’,‘y’}>
說明: b為基準(zhǔn)計(jì)算col的直方圖信息。

hive> select?histogram_numeric(100,5) from?iteblog;

[{"x":100.0,"y":1.0}]

復(fù)合類型構(gòu)建操作

1、Map類型構(gòu)建: map

語法: map (key1, value1, key2, value2, …)
說明:根據(jù)輸入的keyvalue對(duì)構(gòu)建map類型

hive> Create?table?iteblog as?select?map('100','tom','200','mary') as?t from?iteblog;

hive> describe iteblog;

t?????? map<string ,string>

hive> select?t from?iteblog;

{"100":"tom","200":"mary"}

2、Struct類型構(gòu)建: struct

語法: struct(val1, val2, val3, …)
說明:根據(jù)輸入的參數(shù)構(gòu)建結(jié)構(gòu)體struct類型

hive> create?table?iteblog as?select?struct('tom','mary','tim') as?t from?iteblog;

hive> describe iteblog;

t?????? struct<col1:string ,col2:string,col3:string>

hive> select?t from?iteblog;

{"col1":"tom","col2":"mary","col3":"tim"}

3、array類型構(gòu)建: array

語法: array(val1, val2, …)
說明:根據(jù)輸入的參數(shù)構(gòu)建數(shù)組array類型

hive> create?table?iteblog as?select?array("tom","mary","tim") as?t from?iteblog;

hive> describe iteblog;

t?????? array<string>

hive> select?t from?iteblog;

["tom","mary","tim"]

復(fù)雜類型訪問操作

1、array類型訪問: A[n]

語法: A[n]
操作類型: Aarray類型,nint類型
說明:返回?cái)?shù)組A中的第n個(gè)變量值。數(shù)組的起始下標(biāo)為0。比如,A是個(gè)值為['foo', 'bar']的數(shù)組類型,那么A[0]將返回'foo',A[1]將返回'bar'

hive> create?table?iteblog as?select?array("tom","mary","tim") as?t from?iteblog;

hive> select?t[0],t[1],t[2] from?iteblog;

tom???? mary??? tim

2、map類型訪問: M[key]

語法: M[key]
操作類型: Mmap類型,keymap中的key
說明:返回map類型M中,key值為指定值的value值。比如,M是值為{'f' -> 'foo', 'b' -> 'bar', 'all' -> 'foobar'}map類型,那么M['all']將會(huì)返回'foobar'

hive> Create?table?iteblog as?select?map('100','tom','200','mary') as?t from?iteblog;

hive> select?t['200'],t['100'] from?iteblog;

mary??? tom

3、struct類型訪問: S.x

語法: S.x
操作類型: Sstruct類型
說明:返回結(jié)構(gòu)體S中的x字段。比如,對(duì)于結(jié)構(gòu)體struct foobar {int foo, int bar}foobar.foo返回結(jié)構(gòu)體中的foo字段

hive> create?table?iteblog as?select?struct('tom','mary','tim') as?t from?iteblog;

hive> describe iteblog;

t?????? struct<col1:string ,col2:string,col3:string>

hive> select?t.col1,t.col3 from?iteblog;

tom???? tim

復(fù)雜類型長度統(tǒng)計(jì)函數(shù)

1.Map類型長度函數(shù): size(Map<k .V>)

語法: size(Map<k .V>)
返回值: int
說明: 返回map類型的長度

hive> select?size(map('100','tom','101','mary')) from?iteblog;

2

2.array類型長度函數(shù): size(Array<T>)

語法: size(Array<T>)
返回值: int
說明: 返回array類型的長度

hive> select?size(array('100','101','102','103')) from?iteblog;

4

3.類型轉(zhuǎn)換函數(shù)

類型轉(zhuǎn)換函數(shù): cast
語法: cast(expr as <type>)
返回值: Expected "=" to follow "type"
說明: 返回轉(zhuǎn)換后的數(shù)據(jù)類型

hive> select?cast(1 as?bigint) from?iteblog;

1

轉(zhuǎn)載于:https://www.cnblogs.com/yuejiaming/p/10572358.html

總結(jié)

以上是生活随笔為你收集整理的Hive常用函数大全一览的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。