文章 查看内容

Spark数值函数

Spark数值函数

175 0 函数专题 2024-8-20 17:33 发布者: 观小凡

本文介绍常用的数值转换和数学计算函数。
 

1. 概述

      Spark 支持的数值类型主要包括以下几种:整数类型(Short/Int/Long), 浮点类型(Float/Double), 十进制类型(Decimal)。在观远BI中,也兼容来自于不同类型数据库的其它类型;不过在非直连数据集的使用过程中,默认会把数值转换为整数类型(Int、Long)浮点类型(Double)来展示和计算,小数位默认展示前6位。

      本文将介绍常用的数值转换和数学计算函数。统计类函数请参考 聚合统计函数非聚合统计函数

2. 函数列表

2.1. 精度处理和转换

用途

函数

示例

结果

向上取整

ceil(expr) / ceiling(expr)

ceil(-0.1)

0

向下取整

floor(expr)

floor(4.12)

4

使用四舍五入(HALF_UP)模式将数值舍入到指定小数位

round(expr,d)

round(118.5, 0)

119

format_number(expr1, expr2) 返回string

format_number(10.123456, 4)

'10.1235'

使用半偶数舍入(HALF_EVEN)模式将数值舍入到指定小数位

bround(expr, d)

当被舍位是5,后面还有非0值则进1;后面无数字或为0时,前一位是偶数则舍,是奇数则进1,目标是让被舍前一位变成偶数。

bround(118.5, 0)

bround(119.5, 0)

118

120

把小数四舍五入到整数 (返回浮点数,0个小数位)

rint(expr)

rint(10.123456)

10

返回数值的负值(正负值符号对调)

negative(expr)

negative(1)

-1

判断数值的正负,正负零分别返回1、-1、0

sign(expr) / signum(expr)

sign(10)

1

转换数值格式为int

int(expr)

int('10.1')

10

转换数值格式为bigint

bigint(expr)

bigint('10.1')

10

转换数值格式为double(双精度浮点)

double(expr)

double(10)

10.0

转换数值格式为float(单精度浮点)

float(expr)

float(10)

10.0

转换数值格式为decimal

decimal(expr) (默认精度为decimal(10,0))

decimal(10.123456)

10

转换字段格式为目标格式

cast(expr AS type)

cast(10.00 as int)

10

cast(10.123456 as decimal(10,2))

10.12

把字符串类型数值转换为数值

to_number(str, fmt)

to_number('12,345', '99,999')

12345

to_number('$78.12', '$99.99')

78.12

转换数值为指定格式字符串

to_char(number, fmt)

to_varchar(number, fmt)

to_char(78.12, '$99.99')

'$78.12'

2.2. 数学计算

用途

函数

示例

结果

绝对值

abs(expr)

abs(-1)

1

两数相除的余数(作用同%)

mod(expr1,expr2)

mod(2,1.8)

0.2

返回数值的负值(正负值符号对调)

negative(expr)

negative(1)

-1

计算一个数的幂次方

pow(expr1, expr2)
power(expr1, expr2)

pow(2, 3)

8

计算一个非负数的算术平方根

sqrt(expr)

sqrt(4)

2

计算一个数的立方根

cbrt(expr)

cbrt(27)

3

计算0-20内数的阶乘 (expr非整数则截尾取整)

factorial(expr)

factorial(5)

120

取对数 (以base为底,求expr对数,默认为自然对数底)

log(base, expr)

log(10, 100)

2

以10为底的对数

log10(expr)

log10(100)

2

以2为底的对数

log2(expr)

log2(16)

4

计算较小数字的自然对数(作用同log(1 + expr)

log1p(expr)

log1p(0.01)

0.00995

将弧度转化为角度

degrees(expr)

degrees(3.141592653589793)

180

把角度转换为弧度

radians(expr)

radians(180)

3.141593

自然底数e(欧拉数)

e()

e()

2.718282

返回e的n次幂

exp(expr)

exp(0)

1

返回e的n次幂-1(作用同 exp(expr) - 1)

expm1(expr)

expm1(0)

0

π值

pi()

pi()

3.141593

2.3. 三角函数

用途

函数

示例

结果

反余弦

acos(expr)

acos(0)

1.570796

反双曲余弦

acosh(expr)

acosh(1)

0

反正弦

asin(expr)

asin(1)

1.570796

反双曲正弦

asinh(expr)

asinh(1)

0.881374

反正切

atan(expr)

atan(1)

0.785398

返回x、y坐标的反正切值

atan2(exprY, exprX)

atan2(2, 2)

0.785398

反双曲正切

atanh(expr)

atanh(0.5)

0.549306

余弦

cos(expr)

cos(1)

0.540302

双曲余弦

cosh(expr)

cosh(1)

1.543081

余切

cot(expr)

cot(1)

0.642093

余割

csc(expr)

csc(1)

1.188395

计算直角三角形的斜边长

hypot(expr1, expr2)

hypot(3, 4)

5

正割

sec(expr)

sec(0)

1

正弦

sin(expr)

sin(1)

0.841471

双曲正弦

sinh(expr)

sinh(1)

1.175201

正切

tan(expr)

tan(1)

1.557408

双曲正切

tanh(expr)

tanh(1)

0.761594

2.4. 随机数生成

用途

函数

示例

结果

返回均匀分布的0-1之间的随机小数

rand()
random()

rand()*50

27.225448

返回标准正态分布的随机小数(均值为0,方差为1)

randn()

randn()

-2.425495


      更多的Spark函数和用法请参考 官方文档;观远BI内的使用案例请参考 Spark数值函数使用案例

路过

雷人

握手
1

鲜花

鸡蛋

刚表态过的朋友 (1 人)

评论

您需要登录后才可以发表言论 登录立即注册
微信服务号
联系我们
电话:400-880-0750
邮箱:hello@guandata.com
Copyright © 2001-2024 观远社区 版权所有 All Rights Reserved. 浙 ICP 备15006424号-3
去评论 去发文 返回顶部
返回顶部