Hive函式 日期函式,正規表示式和排序函式

2021-10-04 22:32:44 字數 2932 閱讀 8890

本文主要分享下hive中日期函式,正規表示式函式,以及排序函式的使用方法和特點。

/* 往前推兩個月 */

cast(add_months(

date

'2020-03-31',-

2)asdate format 'yyyy-dd-mm'

)--2020-01-31

/* 往前推1年*/

cast(

date

'2020-04-01'

-interval

1 years)

--2019-04-01

cast(

date

'2020-02-29'

-interval

1 years)

--結果不會是2019-02-28 而是error

--推薦使用add_months()

cast(add_months(

date

'2020-02-29',-

12)asdate format 'yyyy-dd-mm'

)--2020-02-28

hive中常用的三個函式如下:

日期減n天select date_sub(current_date,2)

select date_sub('2020-03-20',1) --2020-03-19

日期加n天select date_add('2020-03-19',2) --2020-03-21

日期差select datediff('2020-03-22','2020-03-20') --2

hive中正則表達函式有3個

regexp(string,pattern) --返回值 布林型別 true false

主要在where中作篩選條件

select regexp(『ab.ge』,』[0-9]』) --false

同時包含數字和字母的正規表示式:』^(?![0-9]+)[0

−9a−

za−z

].∗?

)[0-9a-za-z].*?

)[0−9a

−za−

z].∗

?』regexp_extract(string,pattern,int index) --返回值 string

int index 取值為[0-n],n不大於正則項pattern的組成個數,正則項由多部分組合每部分在()內包含。

ps: index = 0返回與符合正則的整個原表示式 ,index預設等於1 ;

`

select regexp_extract(

'6a9d0b'

,'[0-9a-za-z]+',0

)`-- 返回 6a9d0b

index 必須且只能設定為0 預設是1 會報錯 ,因為正則項pattern是乙個整體,不是幾個部分組成;

–』([0-9]+)(.*?)([0-9]+)』 這個正則項就是三部分組成 第一部分是數字([0-9]+) 第二部分是字元的貪婪匹配,第三部分是字母

--取滿足正則項的整體字串

select regexp_extract(

'["84745554","asdd"]'

,'([0-9]+)(.*?)([a-za-z]+)',0

);--84745554","asdd

--取滿足正則項的第一部分子字串

select regexp_extract(

'["84745554","asdd"]'

,'([0-9]+)(.*?)([a-za-z]+)',1

);----84745554

--取滿足正則項的第二部分子字串

select regexp_extract(

'["84745554","asdd"]'

,'([0-9]+)(.*?)([a-za-z]+)',2

);--","

--取滿足正則項的第三部分子字串

select regexp_extract(

'["84745554","asdd"]'

,'([0-9]+)(.*?)([a-za-z]+)',3

);--asdd

主要在select語句中篩選子字串

select regexp_extrct(

'trx_txt'

,'[0-9]',1

)

regexp_replace(string,pattern,replace string) --返回值 string

** 主要在select語句中作替換**

select regexp_replace(

'adci892'

,'[0-9]'

,'v'

)--adcivvv

order by會對輸入做全域性排序,因此只有乙個reducer(多個reducer無法保證全域性有序),

只有乙個reducer,會導致當輸入規模較大時,需要較長的計算時間。

sort by不是全域性排序,其在資料進入reducer前完成排序,

sort by 的資料只能保證在同一reduce中的資料可以按指定字段排序。

distribute by按照指定的字段對資料進行劃分到不同的輸出reduce / 檔案中

cluster by除了具有 distribute by 的功能外還兼具 sort by 的功能。

正規表示式函式

正規表示式函式 函 數 說 明 regexp like x,pattern match option 從x中搜尋pattern引數中定義的正規表示式。可以使用match option修改預設匹配選項,該引數可以被設定為 c 說明在匹配時區分大小寫 預設選項 i 說明在匹配時不區分大小寫 n 允許使用...

正規表示式 正規表示式函式 筆記

筆記直接使用pycharm製作,需要原始檔請私聊。正規表示式函式 1.match 2.search 3.全域性匹配函式 全域性匹配 re.compile 正規表示式 findall 資料 import re string poythonydasadcasa pat2 p.y 懶惰模式執行 較精準 r...

正規表示式 日期

1 日期範圍 datetime 值型別表示值範圍在公元 紀元 0001 年 1 月 1 日午夜 12 00 00 到公元 c.e.9999 年 12 月 31 日晚上 11 59 59 之間的日期和時間。2 閏年 關於公曆閏年是這樣規定的 地球繞太陽公轉一周叫做一回歸年,一回歸年長365日5時48分...