数学计算函数

数学计算函数

本文介绍数学计算函数的基本语法和示例。

日志服务支持如下数学计算函数。

说明
  • 支持如下运算符:

    +-*/%

    其中,使用运算符/时,默认不保留小数部分。您可通过 x*1.0/y 运算,保留小数部分。

  • 在日志服务分析语句中,表示字符串的字符必须使用单引号('')包裹,无符号包裹或被双引号("")包裹的字符表示字段名或列名。例如: 'status' 表示字符串 status, status "status" 表示日志字段 status。

函数名称

语法

说明

支持 SQL

支持 SPL

abs 函数

abs( x )

计算 x 的绝对值。

acos 函数

acos( x )

计算 x 的反余弦。

asin 函数

asin( x )

计算 x 的反正弦。

atan 函数

atan( x )

计算 x 的反正切。

atan2 函数

atan2( x , y )

计算 x y 相除的结果的反正切。

cbrt 函数

cbrt( x )

计算 x 的立方根。

ceil 函数

ceil( x

x 进行向上取整数。

ceil 函数是 ceiling 函数的别名。

ceiling 函数

ceiling( x

x 进行向上取整数。

cos 函数

cos( x )

计算 x 的余弦。

cosh 函数

cosh( x )

计算 x 的双曲余弦。

cosine_similarity 函数

cosine_similarity( x , y )

计算 x y 之间的余弦相似度。

×

degrees 函数

degrees( x )

将弧度转换为度。

e 函数

e()

返回自然底数 e 的值。

exp 函数

exp( x )

计算自然底数 e x 次幂。

×

floor 函数

floor( x )

x 进行向下取整数。

from_base 函数

from_base( x , y )

根据 BASE 编码将 x 转为 y 进制的数字。

ln 函数

ln( x )

计算 x 的自然对数。

infinity 函数

infinity()

返回正无穷的数值。

is_nan 函数

is_nan( x )

判断 x 是否为 NaN。

log2 函数

log2( x )

计算 x 2 为底的对数。

log10 函数

log10( x )

计算 x 10 为底的对数。

log 函数

log( x , y )

计算 x y 为底的对数。

×

mod 函数

mod( x , y )

计算 x y 相除的余数。

nan 函数

nan()

返回一个 NaN 值。

pi 函数

pi()

返回π值,精确到小数点后 15 位。

pow 函数

pow( x , y )

计算 x y 次幂。

pow 函数是 power 函数的别名。

power 函数

power( x , y )

计算 x y 次幂。

radians 函数

radians( x )

将度转换为弧度。

rand 函数

rand()

返回随机数。

random 函数

random()

返回[0,1)之间的随机数。

random( x )

返回[0,x)之间的随机数。

round 函数

round( x )

x 进行四舍五入取整数。

round( x , n )

x 进行四舍五入且保留 n 位小数。

sign 函数

sign( x )

返回 x 的符号,通过 1、0、-1 表示。

×

sin 函数

sin( x )

计算 x 的正弦。

sqrt 函数

sqrt( x )

计算 x 的平方根。

tan 函数

tan( x )

计算 x 的正切。

tanh 函数

tanh( x )

计算 x 的双曲正切。

to_base 函数

to_base( x , y )

根据 BASE 编码将 x 转为 y 进制的字符串。

×

truncate 函数

truncate( x )

截断 x 的小数部分。

width_bucket 函数

width_bucket( x , bound1 , bound2 , numBuckets )

将一段数值范围划分成大小相同的多个 Bucket,然后返回 x 所属的 Bucket。

×

width_bucket( x , bins )

使用数组指定 Bucket 的范围,然后返回 x 所属的 Bucket。

×

abs 函数

abs 函数用于计算 x 的绝对值。

语法

abs(x)

参数说明

参数

说明

x

参数值为 smallint 类型、integer 类型、real 类型、tinyint 类型、bigint 类型、double 类型或 decimal 类型。

返回值类型

与参数值的类型一致。

示例

计算-25 的绝对值。

  • 查询和分析语句

    * | select abs(-25)
  • 查询和分析结果 abs

acos 函数

acos 函数用于计算 x 的反余弦。

语法

acos(x)

参数说明

参数

说明

x

参数值为 double 类型,取值范围为[-1,1]。

如果超出[-1,1],则返回 NaN。

返回值类型

double 类型。

示例

计算 45°角的反余弦。

  • 查询和分析语句

    * | SELECT acos(pi()/4)
  • 查询和分析结果 acos

asin 函数

asin 函数用于计算 x 的反正弦。

语法

asin(x)

参数说明

参数

说明

x

参数值为 double 类型,取值范围为[-1,1]。

如果超出[-1,1],则返回 NaN。

返回值类型

double 类型。

示例

计算 45°角的反正弦。

  • 查询和分析语句

    * | SELECT  asin(pi()/4)
  • 查询和分析结果 acos

atan 函数

atan 函数用于计算 x 的反正切。

语法

atan(x)

参数说明

参数

说明

x

参数值为 double 类型。

返回值类型

double 类型。

示例

计算 45°角的反正切。

  • 查询和分析语句

    * | SELECT atan(pi()/4)
  • 查询和分析结果 atan

atan2 函数

atan2 函数用于计算 x y 相除的结果的反正切。

语法

atan2(x, y)

参数说明

参数

说明

x

参数值为 double 类型。

y

参数值为 double 类型。

返回值类型

double 类型。

示例

计算 30°角的反正切。

  • 查询和分析语句

    * | SELECT atan2(pi(),6)
  • 查询和分析结果 atan2

cbrt 函数

cbrt 函数用于计算 x 的立方根。

语法

cbrt(x)

参数说明

参数

说明

x

参数值为 double 类型。

返回值类型

double 类型。

示例

计算 100 的立方根。

  • 查询和分析语句

    * | select cbrt(100)
  • 查询和分析结果 cbrt

ceil 函数

ceil 函数用于对 x 进行向上取整数。ceil 函数是 ceiling 函数的别名。

语法

ceil(x)

参数说明

参数

说明

x

参数值为 tinyint、smallint、integer、real、bigint、double、decimal 类型 。

  • x 为正数,则朝远离 0 的方向取整。

  • x 为负数,则朝向 0 的方向取整。

返回值类型

与参数值的类型一致。

示例

request_time 字段的值进行向上取整数。

  • 字段样例

    request_time:9.3
  • 查询和分析语句

    * | SELECT ceil(request_time) AS request_time
  • 查询和分析结果 ceiling

ceiling 函数

ceiling 函数用于对 x 进行向上取整数。

语法

ceiling(x)

参数说明

参数

说明

x

参数值为 tinyint、smallint、integer、real、bigint、double、decimal 类型 。

  • x 为正数,则朝远离 0 的方向取整。

  • x 为负数,则朝向 0 的方向取整。

返回值类型

与参数值的类型一致。

示例

request_time 字段的值进行向上取整数。

  • 字段样例

    request_time:9.3
  • 查询和分析语句

    * | SELECT ceiling(request_time) AS request_time
  • 查询和分析结果 ceiling

cos 函数

cos 函数用于计算 x 的余弦。

语法

cos(x)

参数说明

参数

说明

x

参数值为 double 类型。

返回值类型

double 类型。

示例

计算 30°角的余弦。

  • 查询和分析语句

    * | SELECT cos(pi()/6)
  • 查询和分析结果 cos

cosh 函数

cosh 函数用于计算 x 的双曲余弦。

语法

cosh(x)

参数说明

参数

说明

x

参数值为 double 类型。

返回值类型

double 类型。

示例

计算 30°角的双曲余弦。

  • 查询和分析语句

    * | SELECT cosh(pi()/6)
  • 查询和分析结果 cosh

cosine_similarity 函数

cosine_similarity 函数用于计算 x y 之间的余弦相似度。

语法

cosine_similarity(x, y)

参数说明

参数

说明

x

参数值为 map(varchar,double)类型。

y

参数值为 map(varchar,double)类型。

返回值类型

double 类型。

示例

计算两个向量之间的余弦相似度。

  • 查询和分析语句

    * | SELECT cosine_similarity(MAP(ARRAY['a'], ARRAY[1.0]), MAP(ARRAY['a'], ARRAY[2.0]))
  • 查询和分析结果 cosine_similarity

degrees 函数

degrees 函数用于将弧度转换为度。

语法

degrees(x)

参数说明

参数

说明

x

参数值为 double 类型。

返回值类型

double 类型。

示例

将弧度π转换为度。

  • 查询和分析语句

    * | SELECT degrees(pi())
  • 查询和分析结果 degrees

e 函数

e 函数用于返回自然底数 e 的值。

语法

e()

返回值类型

double 类型。

示例

返回自然底数 e 的值。

  • 查询和分析语句

    * | SELECT e()
  • 查询和分析结果 e()

exp 函数

exp 函数用于计算自然底数 e x 次幂。

语法

exp(x)

参数说明

参数

说明

x

参数值为 double 类型。

返回值类型

double 类型。

示例

计算自然底数 e 3 次幂。

  • 查询和分析语句

    * | SELECT exp(3)
  • 查询和分析结果 exp

floor 函数

floor 函数用于对 x 进行向下取整数。

语法

floor(x)

参数说明

参数

说明

x

参数值为 tinyint、smallint、integer、real、bigint、double、decimal 类型 。

  • x 为正数,则朝向 0 的方向取整。

  • x 为负数,则朝远离 0 的方向取整。

返回值类型

double 类型。

示例

request_time 字段的值进行向下取整数。

  • 字段样例

    request_time:10.3
  • 查询和分析语句

    * | SELECT floor(request_time) AS request_time
  • 查询和分析结果 ceiling

from_base 函数

from_base 函数返回将字符串 x y 进制解释得到的数值。

语法

from_base(x, y)

参数说明

参数

说明

x

参数值为 varchar 类型。

y

参数值为 bigint 类型。进制,取值范围为[2,36]。

返回值类型

bigint 类型。

示例

将字符串 1101 转换为数字。

  • 查询和分析语句

    * | SELECT  from_base('1101',2)
  • 查询和分析结果 from_base

ln 函数

ln 函数用于计算 x 的自然对数。

语法

ln(x)

参数说明

参数

说明

x

参数值为 double 类型且大于 0。

返回值类型

double 类型。

示例

计算 2 的自然对数。

  • 查询和分析语句

    * | SELECT ln(2)
  • 查询和分析结果 ln

infinity 函数

infinity 函数用于返回正无穷的数值。

语法

infinity()

返回值类型

double 类型。

示例

用于返回正无穷的数值。

  • 查询和分析语句

    * | SELECT infinity()
  • 查询和分析结果 infinity

is_nan 函数

is_nan 函数用于判断 x 是否为 NaN。如果是,则返回 true。

语法

is_nan(x)

参数说明

参数

说明

x

参数值为 double 类型。

返回值类型

boolean 类型。

示例

判断 status 字段的值是否为 NaN。

  • 查询和分析语句

    * | SELECT is_nan(status)
  • 查询和分析结果 is_nan

log2 函数

log2 函数用于计算 x 2 为底的对数。

语法

log2(x)

参数说明

参数

说明

x

参数值为 double 类型。

返回值类型

double 类型。

示例

计算 100 2 为底的对数。

  • 查询和分析语句

    * | SELECT log2(100)
  • 查询和分析结果 log2

log10 函数

log10 函数用于计算 x 10 为底的对数。

语法

log10(x)

参数说明

参数

说明

x

参数值为 double 类型。

返回值类型

double 类型。

示例

计算 100 10 为底的对数。

  • 查询和分析语句

    * | SELECT log10(100)
  • 查询和分析结果 log10

log 函数

log 函数用于计算 x y 为底数的对数。

语法

log(x, y)

参数说明

参数

说明

x

参数值为 double 类型。

y

参数值为 double 类型。

返回值类型

double 类型。

示例

计算 100 5 为底数的对数。

  • 查询和分析语句

    * | SELECT log(100,5)
  • 查询和分析结果 log

mod 函数

mod 函数用于计算 x y 相除的余数。

语法

mod(x, y)

参数说明

参数

说明

x

参数值为 tinyint、smallint、integer、real、bigint、double、decimal 类型。

y

参数值为 tinyint、smallint、integer、real、bigint、double、decimal 类型。

返回值类型

与参数值的数据类型一致。

示例

计算 100 30 相除的余数。

  • 查询和分析语句

    * | SELECT mod(100,30)
  • 查询和分析结果 mod

nan 函数

nan 函数用于返回一个 NaN 值(Not a Number)。

语法

nan()

返回值类型

double 类型。

示例

返回一个 NaN 值。

  • 查询和分析语句

    * | SELECT nan()
  • 查询和分析结果 nan

pi 函数

pi 函数用于返回π值,精确到小数点后 15 位。

语法

pi()

返回值类型

double 类型。

示例

返回π值,精确到小数点后 15 位。

  • 查询和分析语句

    * | SELECT pi()
  • 查询和分析结果 pi

pow 函数

pow 函数用于计算 x y 次幂。pow 函数是 power 函数的别名。

语法

pow(x, y)

参数说明

参数

说明

x

参数值为 double 类型。

y

参数值为 double 类型。

返回值类型

double 类型。

示例

计算 2 5 次幂。

  • 查询和分析语句

    * | SELECT pow(2,5)
  • 查询和分析结果 pow

power 函数

power 用于计算 x y 次幂。

语法

power(x, y)

参数说明

参数

说明

x

参数值为 double 类型。

y

参数值为 double 类型。

返回值类型

double 类型。

示例

计算 2 5 次幂。

  • 查询和分析语句

    * | SELECT power(2,5)
  • 查询和分析结果 pow

radians 函数

radians 函数用于将度转换为弧度。

语法

radians(x)

参数说明

参数

说明

x

参数值为 double 类型。

返回值类型

double 类型。

示例

计算 180°对应的弧度。

  • 查询和分析语句

    * | SELECT radians(180)
  • 查询和分析结果 radians

rand 函数

rand 函数用于返回随机数。

语法

rand()

返回值类型

double 类型。

示例

返回一个随机数。

  • 查询和分析语句

    * | select rand()
  • 查询和分析结果 rand

random 函数

random 函数用于返回[0,x)之间的随机数。

语法

  • 返回[0,1)之间的随机数。

    random()
  • 返回[0,x)之间的随机数。

    random(x)

参数说明

参数

说明

x

参数值为 tinyint、smallint、integer bigint 类型。

返回值类型

与参数值的类型一致。

示例

返回[0,100)之间的随机数。

  • 查询和分析语句

    * | select random(100)
  • 查询和分析结果 random

round 函数

round 函数用于对 x 进行四舍五入。如果 n 存在,则保留 n 位小数;如果 n 不存在,则对 x 进行四舍五入取整数。

语法

  • x 进行四舍五入取整数。

    round(x)
  • x 进行四舍五入且保留 n 位小数。

    round(x, n)

参数说明

参数

说明

x

参数值为 tinyint、smallint、integer bigint 类型。

n

n 位小数。

返回值类型

与参数值的数据类型一致。

示例

同比今天与昨天的访问 PV,并使用百分数表示。

  • 查询和分析语句

    * | SELECT diff [1] AS today, round((diff [3] -1.0) * 100, 2) AS growth FROM (SELECT compare(pv, 86400) as diff FROM (SELECT COUNT(*) as pv FROM website_log))
  • 查询和分析结果 round

sign 函数

sign 函数用于返回 x 的符号,通过 1、0、-1 表示。

语法

sign(x)

参数说明

参数

说明

x

参数值为 integer、smallint、tinyint、real、 double、bigint decimal(p,s)类型。

  • x 为正数,返回 1。

  • x 0,返回 0。

  • x 为负数,返回-1。

返回值类型

与参数值的数据类型一致。

示例

计算数字 10 的符号。

  • 查询和分析语句

    * | SELECT sign(10)
  • 查询和分析结果 sign

sin 函数

sin 函数用于计算 x 的正弦。

语法

sin(x)

参数说明

参数

说明

x

参数值为 double 类型。

返回值类型

double 类型。

示例

计算 90°角的正弦。

  • 查询和分析语句

    * | select sin(pi()/2)
  • 查询和分析结果 sin

sqrt 函数

sqrt 函数用于计算 x 的平方根。

语法

sqrt(x)

参数说明

参数

说明

x

参数值为 double 类型。

返回值类型

double 类型。

示例

计算 100 的平方根。

  • 查询和分析语句

    * | select sqrt(100)
  • 查询和分析结果 sqrt

tan 函数

tan 函数用于计算 x 的正切。

语法

tan(x)

参数说明

参数

说明

x

参数值为 double 类型。

返回值类型

double 类型。

示例

计算 tan30°角的正切。

  • 查询和分析语句

    * | SELECT tan(pi()/6)
  • 查询和分析结果 tan

tanh 函数

tanh 函数用于计算 x 的双曲正切。

语法

tanh(x)

参数说明

参数

说明

x

参数值为 double 类型。

返回值类型

double 类型。

示例

计算 30°的双曲正切。

  • 查询和分析语句

    * | SELECT tanh(pi()/6)
  • 查询和分析结果 tanh

to_base 函数

to_base 函数将根据 BASE 编码将 x 转为 y 进制的字符串。

语法

to_base(x, y)

参数说明

参数

说明

x

参数值为 bigint 类型。

y

参数值为 bigint 类型。进制,取值范围为[2,36]。

返回值类型

varchar 类型。

示例

180 转换为二进制字符串。

  • 查询和分析语句

    * | SELECT  to_base(180, 2)
  • 查询和分析结果 to_base

truncate 函数

truncate 函数用于截断 x 的小数部分。

语法

truncate(x)

参数说明

参数

说明

x

参数值为 double 类型。

返回值类型

double 类型。

示例

截断 11.11 的小数部分。

  • 查询和分析语句

    * | SELECT  truncate(11.11)
  • 查询和分析结果 truncate

width_bucket 函数

width_bucket 函数用于返回 x 所属的 Bucket。

语法

  • 将一段数值范围划分成大小相同的多个 Bucket,然后返回 x 所属的 Bucket。

    width_bucket(x, bound1, bound2, numBuckets)
  • 使用数组指定 Bucket 的范围,然后返回 x 所属的 Bucket。

    width_bucket(x, bins)

参数说明

参数

说明

x

参数值为 double 类型。

bound1

提供数值范围的下限。

bound2

提供数值范围的上限。

numBuckets

Bucket 数量。大于 0 的整数。

bins

使用数组指定 Bucket 的范围。 bins double 类型的数组。

返回值类型

bigint 类型。

说明
  • x 在指定范围内,返回 x 的所属的 Bucket。

  • x 在下限范围外,返回 0。

  • x 在上限范围外,返回 numBuckets+1

示例

  • 示例 1:将[10,80)范围等分为 7 Bucket,然后返回 request_time 字段的各个值所属的 Bucket。

    • 查询和分析语句

      * | SELECT request_time, width_bucket(request_time, 10, 80,7) AS numBuckets
    • 查询和分析结果  width_bucket

  • 示例 2:使用数组指定 7 Bucket 的范围,然后返回 request_time 字段的各个值所属的 Bucket。

    • 查询和分析语句

      * | SELECT request_time, width_bucket(request_time, array[10,20,30,40,50,60,70,80]) AS numBuckets
    • 查询和分析结果 width_bucket