hive 的相關關鍵字以及相應的補全規則

hive 查詢關鍵字總結

 

select查詢語句請求。它可以是一條完成的查詢語句同時還可以是別的查詢語句的子語句。

SELECT [ALL | DISTINCT] select_expr, select_expr, ...

FROM table_name

[WHERE where_condition]

[GROUP BY col_list]

[ORDER BY col_list]

[CLUSTER BY col_list  | [DISTRIBUTE BY col_list] [SORT BY col_list]

]

[LIMIT number]

 

select_expr:可以爲表(table_name) 的多個字段,檢測:如果” FROM “ 後加上表名,則需要填充該表包含的字段信息。

table_name:填充  “ FROM “ 之後,需要填充選定數據庫的表名。

WHERE:在where查詢中支持多個運算符和UDF查詢,在自動補全時:需要提示表指點的字段,UDF和常用運算符的查詢信息。(常用運算符在後面會介紹)

ALL DISTINCT All,如果直接select col 則默認會添加ALL,返回所有有關的列。DISTINCT,去除重複列信息。 ALL DISTINCT都是自動補全列名信息。

eg: SELECT DISTINCT col1 FROM t1

LEFT/INNER/OUTER/RIGHThive錶鏈接查詢使用連接符,後面自動補全表名。

AND :查詢多個條件之間的連接符,後面自動補全表相關列(若有鏈接查詢,則補全鏈接多表的字段信息)

HAVING:在hive 0.7.0之後版本加入支持。後面可以跟GROUP BY的查詢條件信息。可以補全列名和常用運算符信息。

GROUP BY:聚合函數,後面自動補全列名信息。

ORDER BY / SORT BY/DITRIBUTE BY /CLUSTER BY

ORDER BY 後接表字段,依照某一字段排序,在輸入字段後,自動補全DESC

SORT BY HIVE 用此函數對列進行排序,然後將列放入reducer執行。後自動補全列名信息。SORT BY 只能給予部分有序的情況。

DITRIBUTE BY 後補全列名,設定哪些列信息會被聚合到REDUCER中。

CLUSTER BY SORT BY DITRIBUTE BY 的結合,後接列名信息。注意:CLUSTER BY 只能是降序,不可自動補全DESC ASC

/*+ MAPJOIN(tableName) */ 如果是join比較小的表,那麼在MAP階段加載到內存中處理。MAPREJOIN 默認會自動補全tableName.如果出現MAPJOIN需要自動補全/*  */

UNION:用於多個SELECT語句結果的合併爲單個結果集。自動補全ALL(也可以不補)或者SELECT

egSELECT   av.uid   FROM   action_video   UNION   ALL  SELECT  uid  AS  uid

eg:SELECT .... UNION SELECT ....

 

TABLESAMPLE: HIVE查詢信息取樣。

egSELECT * FROM 表名 TABLESAMPLE (50 PERCENT/rows);

eg:  SELECT COUNT(1) FROM  lxw1 TABLESAMPLE (BUCKET 1 OUT OF 10 ON rand());

自動補全 TABLESAMPLE取樣信息,後接數字則補全PERCENT ROWS ,取50%信息或者50行;還可以補全BUCKET桶取樣,這個補全比較麻煩,具體看樣例。

EXIST: 表明是否存在,可以接(Select .. from 表名)

虛擬列: INPUT_FILE_NAME.map task中的輸入文件名

         BLOCK_OFFSET_INSIDE_FILE  當前全局文件位置

位於select 關鍵字後自動補全此類關鍵字。

Lateral view :  lateral後自動補全view,橫向視圖關鍵字,

udf函數進行聯合使用 : LATERAL VIEW udtf(expression) tableAlias AS columnAlias (','  columnAlias)*   view後自動補全udtf函數名(用戶選中的)

from後: from table (lateralView) 字段名   自動補全字段信息

 

 

將列拆分開平鋪每個對應的值。

OVER 開窗函數,用法:

over後自動補全

overorder by salary between 2 preceding and 2 following 2和減2的範圍。

overpartition by deptno 

OVER 前自動補全有 row_number()    rank()     dense_rank()   first_value()   last_value()    lag()   lead()   

 

partition by :分區。後接字段,獲取當前字段的分區信息,做order by等。不用全表查字段所有數據。

 

子查詢補全策略:

1.FROM 後補全: from 後接(SELECT

2.WHERE後補全:後接字段,接運算符和(SELECTeg where id = (select id from ..)

 

 

 

hive 自帶函數:

=, <> , < , <=, >, >=, , +, -, *, /, % ,& ,| , ^, ~, or, and 基本符號之後補全列名

IS NULL, IS NOTNULL, LIKE, RLIKE, REGEXP 自動補全關鍵字

 

round 自動補全關鍵字 round(col) 後補全列名

round(?),  round(?,?) 取整指定精度

 

http://blog.csdn.net/wisgood/article/details/17376393

 

 

時間函數:

1. UNIX 時間戳轉日期:from_unixtime    from_unixtime(bigint unixtime[, string format])

bigint unixtime可以爲 列名或者用戶輸入的信息,此處需自動補全列名

from_unixtimeexpr

2.獲取當前UNIX時間戳 unix_timestamp 自動補全函數

3.日期轉UNIX時間戳函數  unix_timestamp(String date)   其中可以接列名

4.指定格式轉UNIX時間戳函數: unix_timestamp(string date, string pattern)

 

unix_timestamp 格式類型:

unix_timestamp()  

unix_timestamp(String date)

unix_timestamp(String date, format)

 

5.時間日期轉日期函數 to_date(String timestamp) 返回日期時間字段中日期部分

6.日期轉年   year(String date)  返回日期時間中的年

7.日期轉月   month(String date)

8.日期轉天   day(String date)

9.日期轉小時 hour(String date)

10.日期轉分鐘   minute(String date)

11.日期轉秒     second(String date)

12.日期轉周函數   weekofyear(String date)

13.日期比較函數   datediff(String enddate, String startdate)  結束日期減開始日期 差幾天

14.日期增加函數   date_add(String date, int days)

15.日期減少函數   date_sub(String date, int days)

 

條件函數:

1. if if(boolean testCondition, T valueTrue, T valueFalseOrNull) 

當條件testCondition爲TRUE時,返回valueTrue;否則返回valueFalseOrNull

 

2. COALESCE  非空查找函數  COALESCE(T v1, T v2,…) 

返回參數中的第一個非空值;如果所有值都爲NULL,那麼返回NULL

 

3. CASE  條件判斷函數 CASE a WHEN b THEN c [WHEN d THEN e]* [ELSE f] END

如果a等於b,那麼返回c;如果a等於d,那麼返回e;否則返回f

 

字符串函數:

1. length :   length(String A)  返回A的長度

2. reverse :  reverse(String A)  字符串反轉函數

3. concat :  concat(String A, String B) 字符串鏈接函數

4. concat_ws :  concat_ws(string SEP, string A, string B…) SEP分隔符  返回ASEPBSEP..

5. substr,substring:  substr(string A, int start),substring(string A, int start)  返回字符串Astart位置到結尾的字符串

6. substr,substring:  substr(string A, int start, int len),substring(string A, intstart, int len) 字符串截取函數   返回字符串Astart位置開始,長度爲len的字符串

 

substr,substring: 主要有兩種格式:

substr(string A, int start),substring(string A, int start)

substr(string A, int start, int len),substring(string A, intstart, int len) 

 

7. upper, ucase : upper(String A)  ucase(String A) 字符串轉大寫

8. lower, lcase: lower(String A)  lcase(String A)字符串轉小寫

9. trimtrim(String A) 去空格函數

10. ltrim: ltrim(String A) 去左邊空格函數

11. rtrim: rtrim(String A) 右邊去空格函數

12. regexp_replace: regexp_replace(string A, string B, string C)將字符串A中的符合java正則表達式B的部分替換爲C。注意,在有些情況下要使用轉義字符,類似oracle中的regexp_replace函數。

13. regexp_extract: 正則表達式解析函數,

格式: regexp_extract(string subject, string pattern, int index) 將字符串subject按照pattern正則表達式的規則拆分,返回index指定的字符。

14. parse_url:  URL解析函

格式:parse_url(string urlString, string partToExtract [, stringkeyToExtract])  

返回URL中指定的部分。partToExtract的有效值爲:HOST, PATH, QUERY, REF, PROTOCOL, AUTHORITY, FILE, and USERINFO.

15. get_json_object: json解析函數

格式:get_json_object(string json_string, string path) 解析json的字符串json_string,返回path指定的內容。如果輸入的json字符串無效,那麼返回NULL

16. space : space(int n) 返回長度爲n的字符串

17. repeat



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章