引言:日常使用SQL获取所需数据,当遇到数据量级较大时,企图通过先跑明细数据,再下载后通过Excel来加工处理的方法基本上行不通,此时的Excel对于我们的加工执行动作的反应会极其的慢或电脑直接处于卡死状态,于是我们就希望通过SQL来提升大数据的加工速度,一般的数据加工都会用到数值计算函数,那我们一起来学习Hive中的常用数值计算函数和他们的使用方法吧,知识共享,喜欢的友友请收藏+关注。
1. 取整函数: round
语法 : round(double a)
返回 : bigint
说明 : 返回 double 类型的整数值部分 (遵循四舍五入)
示例:
hive> select round(3.1415926) from lxw_dual;
返回:3
hive> select round(3.5) from lxw_dual;
返回:4
2. 指定精度取整函数: round
语法 : round(double a, int d)
返回: double
说明 : 返回指定精度的 double 类型
示例:
hive> select round(3.1415926,4) from lxw_dual;
返回:3.1416
3. 向下取整函数: floor
语法 : floor(double a)
返回 : bigint
说明 : 返回等于或者小于该 double 变量的最大的整数
示例:
hive> select floor(3.1415926) from lxw_dual;
返回:3
hive> select floor(25) from lxw_dual;
返回:25
4. 向上取整函数: ceil和ceiling
语法 : ceil(double a)
返回 : bigint
说明 : 返回等于或者大于该 double 变量的最小的整数
示例:
hive> select ceil(3.1415926) from lxw_dual;
返回:4
hive> select ceil(46) from lxw_dual;
返回:46
ive> select ceiling(3.1415926) from lxw_dual;
返回:4
hive> select ceiling(46) from lxw_dual;
返回:46
5. 取随机数函数: rand
语法 : rand(),rand(int seed)
返回 : double
说明 : 返回一个 0 到 1 范围内的随机数。如果指定种子seed ,则会找到一个稳定的随机数序列
示例:
hive> select rand() from lxw_dual;
返回:0.5577432776034763
hive> select rand() from lxw_dual;
返回:0.6638336467363424
hive> select rand(100) from lxw_dual;
返回:0.7220096548596434
hive> select rand(100) from lxw_dual;
返回:0.7220096548596434
6. 自然指数函数:exp和自然对数函数:ln
语法 : exp(double a)
返回 : double
说明 : 返回自然对数 e 的 a 次方
示例:
hive> select exp(2) from lxw_dual;
返回:7.38905609893065
语法 : ln(double a)
返回 : double
说明 : 返回 a 的自然对数
示例:
hive> select ln(7.38905609893065) from lxw_dual;
返回:2.0
7.幂运算函数: pow和power
语法 : pow(double a, double p)
返回 : double
说明 : 返回 a 的 p 次幂
示例:
hive> select pow(2,4) from lxw_dual;
返回:16.0
hive> select power(2,4) from lxw_dual;
返回:16.0
8.开平方函数: sqrt
语法 : sqrt(double a)
返回 : double
说明 : 返回 a 的平方根
示例:
hive> select sqrt(16) from lxw_dual;
返回:4.0
9.二进制函数: bin
语法 : bin(bigint a)
返回 : string
说明 : 返回 a 的二进制代码表示
示例:
hive> select bin(7) from lxw_dual;
返回:111
10.十六进制函数: hex
语法 : hex(bigint a)
返回 : string
说明 : 如果变量是 int 类型,那么返回 a 的十六进制表示;如果变量是 string 类型,则返回该字符串的十六进制表示
示例:
hive> select hex(17) from lxw_dual;
返回:11
hive> select hex(‘abc’) from lxw_dual;
返回:616263
11.绝对值函数: abs
语法 : abs(double a) abs(int a)
返回 : double int
说明 : 返回数值 a 的绝对值
示例:
hive> select abs(-3.9) from lxw_dual;
返回:3.9
hive> select abs(10.9) from lxw_dual;
返回:10.9
12.正取余函数: pmod
语法 : pmod(int a, int b),pmod(double a, double b)
返回值 : int double
说明 : 返回正的 a 除以 b 的余数
示例:
hive> select pmod(9,4) from lxw_dual;
返回:1
hive> select pmod(-9,4) from lxw_dual;
返回:3
13.positive函数: positive
语法 : positive(int a), positive(double a)
返回 : int double
说明 : 返回 a
示例:
hive> select positive(-10) from lxw_dual;
返回:-10
hive> select positive(12) from lxw_dual;
返回:12
14.negative函数: negative
语法 : negative(int a), negative(double a)
返回 : int double
示例 :
hive> select negative(-5) from lxw_dual;
返回:5
hive> select negative(8) from lxw_dual;
返回:-8