Hive常用函式及自定義函式
前言:
HQL常用函式語法和RDBMS語法相似
官網參考:
一.Hive自帶函式
hive
> desc function extended upper;
Example:
> SELECT upper('Facebook') FROM src LIMIT 1;
'FACEBOOK'
二.常用的函式語法
舉例:
三.常用時間函式
四.自定義函式
.....
HQL常用函式語法和RDBMS語法相似
官網參考:
一.Hive自帶函式
-
-- 檢視系統自帶函式
hive> show functions; -
least
- length
- like
-
max
- min
- -- 檢視函式使用幫助
hive
> desc function extended upper;
Example:
> SELECT upper('Facebook') FROM src LIMIT 1;
'FACEBOOK'
二.常用的函式語法
舉例:
-
hive> select * from emp;
-
OK
-
7369 SMITH CLERK 7902 1980-12-17 800.0 NULL 20
-
7499 ALLEN SALESMAN 7698 1981-2-20 1600.0 300.0 30
-
7521 WARD SALESMAN 7698 1981-2-22 1250.0 500.0 30
-
7566 JONES MANAGER 7839 1981-4-2 2975.0 NULL 20
-
7654 MARTIN SALESMAN 7698 1981-9-28 1250.0 1400.0 30
-
7698 BLAKE MANAGER 7839 1981-5-1 2850.0 NULL 30
-
7782 CLARK MANAGER 7839 1981-6-9 2450.0 NULL 10
-
7788 SCOTT ANALYST 7566 1987-4-19 3000.0 NULL 20
-
7839 KING PRESIDENT NULL 1981-11-17 5000.0 NULL 10
-
7844 TURNER SALESMAN 7698 1981-9-8 1500.0 0.0 30
-
7876 ADAMS CLERK 7788 1987-5-23 1100.0 NULL 20
-
7900 JAMES CLERK 7698 1981-12-3 950.0 NULL 30
-
7902 FORD ANALYST 7566 1981-12-3 3000.0 NULL 20
-
7934 MILLER CLERK 7782 1982-1-23 1300.0 NULL 10
- 8888 HIVE PROGRAM 7839 1988-1-23 10300.0 NULL NULL
- -- 根據工資降序排序 取前三
-
hive> select * from emp order by salary desc limit 3;
-
OK
-
7369 SMITH CLERK 7902 1980-12-17 800.0 NULL 20
-
7900 JAMES CLERK 7698 1981-12-3 950.0 NULL 30
-
7876 ADAMS CLERK 7788 1987-5-23 1100.0 NULL 20
- -- 求每個部門的最大工資,最小工資,平均工資,所有工資
- select deptno, max(salary),min(salary),avg(salary),sum(salary) from ruozedata_emp group by deptno
-
OK
NULL 10300.0 10300.0 10300.0 10300.0
10 5000.0 1300.0 2916.6666666666665 8750.0
20 3000.0 800.0 2175.0 10875.0
30 2850.0 950.0 1566.6666666666667 9400.0
- -- 求每個部門的最大工資,最小工資,平均工資,所有工資中平均工資大於2000
-
select deptno, max(salary),min(salary),avg(salary),sum(salary) from ruozedata_emp group by deptno
-
where avg(salary)>3000
-
OK
- NULL 10300.0 10300.0 10300.0 10300.0
- 20 3000.0 800.0 2175.0 10875.0
- -- 求每個部門工資前2的姓名和工資
-
select t.*
-
from
-
(select
-
deptno,
-
ename,
-
salary,
-
row_number() over(partition by deptno order by salary desc ) as number
-
from emp)t
- where t.number<=2;
-
OK
-
NULL HIVE 10300.0 1
-
10 KING 5000.0 1
-
10 CLARK 2450.0 2
-
20 SCOTT 3000.0 1
-
20 FORD 3000.0 2
-
30 BLAKE 2850.0 1
- 30 ALLEN 1600.0 2
- -- 統計每個部門的人數
-
select deptno,count(1) from emp group by deptno;
-
OK
-
NULL 1
-
10 3
-
20 5
- 30 6
- -- CASE WHEN統計工資情況
-
select ename,salary,
-
case
-
when salary>1 and salary<=1000 then 'lower'
-
when salary>1000 and salary<=2000 then 'middle'
-
when salary>2000 and salary<=4000 then 'high'
-
else 'highest'
-
end
- from emp
OK
SMITH 800.0 lower
ALLEN 1600.0 middle
WARD 1250.0 middle
JONES 2975.0 high
MARTIN 1250.0 middle
BLAKE 2850.0 high
SMITH 800.0 lower
ALLEN 1600.0 middle
WARD 1250.0 middle
JONES 2975.0 high
MARTIN 1250.0 middle
BLAKE 2850.0 high
- -- 型別轉換
-
hive> select cast('2018-06-17' as date) from dual;
OK
2018-06-17 -
- -- 擷取字串
-
hive> select substr('abcdef',1,5) from dual;
OK
abcde -
- -- 拼接
-
hive> select concat('123','456') from dual;
OK
123456 - -- 制定分割拼接
-
hive> select concat_ws('.','www','baidu','com') from dual;
OK
- -- 獲取長度
-
hive> select length(concat_ws('.','www','baidu','com')) from dual;
OK
- -- split拆分
-
hive> select split(concat_ws('.','www','baidu','com'),'\\.') from dual;
OK
["www","baidu","com"]
Time taken: 0.084 seconds, Fetched: 1 row(s)
- -- 拆分換行
hive> select explode(split(concat_ws('.','www','baidu','com'),'\\.') ) from dual;
OK
www
baidu
com
OK
www
baidu
com
-
-- 大寫轉換小寫
hive> select lower('ABC') from dual;
OK
abc -
-
-- 小寫轉換大寫
hive> select upper('abc') from dual;
OK
ABC
- -- json匯入查詢
-
hive> create table json(json string);
-
OK
-
Time taken: 0.059 seconds
- -- 載入json檔案
- hive> load data local inpath'/home/hadoop/data/test.json' into table json;
-
hive> select * from json;
-
OK
-
{"name":"zhangsan","age":28,"addr":"hz"}
-
{"name":"lisi","age":18,"addr":"bj"}
-
{"name":"wangwu","age":10,"addr":"sh"}
- Time taken: 0.151 seconds, Fetched: 3 row(s)
- -- json_tuple查詢
-
hive> select json_tuple(json,'name','age','addr') as (name,age,addr) from json;
OK
zhangsan 28 hz
lisi 18 bj
wangwu 10 sh
Time taken: 0.077 seconds, Fetched: 3 row(s)
三.常用時間函式
- -- current_date返回年 月 日
hive> select current_date from dual;
OK
2018-06-07
-- 返回unix時間搓
hive> select unix_timestamp() from dual;
OK
1528403209
-- current_timestamp返回年月入時分秒
hive> select current_timestamp from dual;
OK
2018-06-07 16:35:12.752
Time taken: 0.217 seconds, Fetched: 1 row(s)
-- 獲取年月日
hive> select to_date('2018-06-07 16:44:44') from dual;
OK
2018-06-07
-- 獲取年
hive> select year('2018-06-07 16:44:44') from dual;
OK
2018
-- 獲取月
hive> select month('2018-06-07 16:44:44') from dual;
OK
6
-- 獲取日
hive> select day('2018-06-07 16:44:44') from dual;
OK
7
-- 獲取小時
hive> select hour('2018-06-07 16:44:44') from dual;
OK
16
-- 獲取分鐘
hive> select minute('2018-06-07 16:44:44') from dual;
OK
44
-- 獲取秒
hive> select second('2018-06-07 16:44:44') from dual;
OK
-- 時間天相加
hive> select date_add('2018-06-07',10) from dual;
OK
2018-06-17
-- 時間天相減
hive> select date_sub('2018-06-17',10) from dual;
OK
2018-06-07
OK
2018-06-07
-- 返回unix時間搓
hive> select unix_timestamp() from dual;
OK
1528403209
-- current_timestamp返回年月入時分秒
hive> select current_timestamp from dual;
OK
2018-06-07 16:35:12.752
Time taken: 0.217 seconds, Fetched: 1 row(s)
-- 獲取年月日
hive> select to_date('2018-06-07 16:44:44') from dual;
OK
2018-06-07
-- 獲取年
hive> select year('2018-06-07 16:44:44') from dual;
OK
2018
-- 獲取月
hive> select month('2018-06-07 16:44:44') from dual;
OK
6
-- 獲取日
hive> select day('2018-06-07 16:44:44') from dual;
OK
7
-- 獲取小時
hive> select hour('2018-06-07 16:44:44') from dual;
OK
16
-- 獲取分鐘
hive> select minute('2018-06-07 16:44:44') from dual;
OK
44
-- 獲取秒
hive> select second('2018-06-07 16:44:44') from dual;
OK
-- 時間天相加
hive> select date_add('2018-06-07',10) from dual;
OK
2018-06-17
-- 時間天相減
hive> select date_sub('2018-06-17',10) from dual;
OK
2018-06-07
.....
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31441024/viewspace-2155864/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PHP 自定義函式用法及常用函式集合PHP函式
- Hive中自定義函式Hive函式
- hive 3.0.0自定義函式Hive函式
- Hive函式(內建函式+自定義標準函式UDF)Hive函式
- Hive--->建立自定義的UDTF函式Hive函式
- HIVE自定義函式的擴充套件Hive函式套件
- Hive(五)常用函式Hive函式
- VBA 自定義常用函式 (備用)函式
- 動畫函式的繪製及自定義動畫函式動畫函式
- java自定義equals函式和hashCode函式Java函式
- shell自定義函式函式
- Oracle 自定義函式Oracle函式
- hive函式Hive函式
- python教程:自定義函式Python函式
- 02_函式定義及使用函式函式
- JavaScript 設計模式系列 – 自定義函式(惰性函式)JavaScript設計模式函式
- Hive函式大全Hive函式
- Hive的基本介紹以及常用函式Hive函式
- Hue-hive sql常用函式詳解HiveSQL函式
- FlinkSQL自定義函式開發SQL函式
- Laravel自定義輔助函式Laravel函式
- Laravel 新增自定義助手函式Laravel函式
- laravel 自定義全域性函式Laravel函式
- Laravel 自定義函式存放位置Laravel函式
- SparkSQL -- 02 【SparkSQL檔案的讀取與落地,和Hive的整合,內建函式,自定義函式】SparkSQLHive函式
- Hive(六)JSON函式HiveJSON函式
- Hive之分析函式Hive函式
- Hive視窗函式Hive函式
- hive內建函式Hive函式
- Hive是否支援in函式Hive函式
- Mysql 常用函式(1)- 常用函式彙總MySql函式
- php自定義函式放哪兒PHP函式
- MySQL全面瓦解18:自定義函式MySql函式
- matlab自定義函式建立與使用Matlab函式
- Ignite自定義函式注意事項函式
- Mysql 常用函式(20)- ceiling 函式MySql函式
- Mysql 常用函式(15)- upper 函式MySql函式
- 自定義生成器函式模擬Python內建函式filter()函式PythonFilter