hive常用函數整理

Hive常用的函數整理,方便快速查找使用,更多參考文檔https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF


1.條件函數

select nvl(T v1, T default_value);     -- 如果v1不爲null,返回v1否則defaultV
select if(boolean testCondition, T valueTrue, T valueFalseOrNull);	--if條件判斷表達式
select coalesce(T v1, T v2, T v3, ...);  --返回第一個不爲null的value值

2.時間戳格式化

select from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss');
select current_timestamp;
select to_date('2016-08-09 10:09');       --格式化yyyy-MM-dd

3. 時間日期函數

select datediff('2016-09-01','2016-08-01');
select datediff(from_unixtime(unix_timestamp(),'yyyy-MM-dd'), '2016-09-01') <= 90;

select date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'), 1);   --當前時間減1天
select date_add(from_unixtime(unix_timestamp(),'yyyy-MM-dd'), 1);   --當前時間加1天

4.字符串操作函數

select concat(substr('20170209',0,4),'-',substr('20170209',5,2),'-',substr('20170209',7,2));  --字符串截取拼接
select regexp_replace('2017-02-09', '-', '');        --字符串替換    
select concat("[",
          concat_ws(",", collect_list(
                             concat('{\"id\":\"',     nvl(id, ''),'\",', 
                                     '\"name\":\"',   nvl(name, ''),'\",',
                                     '\"score\":\"',  nvl(score, ''),'\",',
                                     '\"rank\":\"',   nvl(rank, ''),'\",',
                                     '\"rate\":\"', nvl(score * 1.0 / total_score, ''),'\"}'
                         ))
          ), 
        "]" );     --字符串拼接,轉換字符串array, array分割爲字符串

5.UDTF explode函數,單挑拆分出多條

select customer_id, product_id  from  rdm_recommender_user_products t 
      lateral view explode(split(t.productids,"\\|")) adtable as product_id;


發佈了56 篇原創文章 · 獲贊 7 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章