数学计算函数

更新时间:
复制 MD 格式

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

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

说明
  • 支持如下运算符:

    +-*/%

    其中,使用运算符/时,默认不保留小数部分。您可通过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)
  • 查询和分析结果:返回值为 25。

acos函数

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

语法

acos(x)

参数说明

参数

说明

x

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

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

返回值类型

double类型。

示例

计算45°角的反余弦。

  • 查询和分析语句

    * | SELECT acos(pi()/4)
  • 查询和分析结果:返回值为 0.6674572160283838。

asin函数

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

语法

asin(x)

参数说明

参数

说明

x

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

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

返回值类型

double类型。

示例

计算45°角的反正弦。

  • 查询和分析语句

    * | SELECT  asin(pi()/4)
  • 查询和分析结果:返回值为 0.6674572160283838。

atan函数

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

语法

atan(x)

参数说明

参数

说明

x

参数值为double类型。

返回值类型

double类型。

示例

计算45°角的反正切。

  • 查询和分析语句

    * | SELECT atan(pi()/4)
  • 查询和分析结果:返回值为 0.6657737500283538。

atan2函数

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

语法

atan2(x, y)

参数说明

参数

说明

x

参数值为double类型。

y

参数值为double类型。

返回值类型

double类型。

示例

计算30°角的反正切。

  • 查询和分析语句

    * | SELECT atan2(pi(),6)
  • 查询和分析结果:返回值为 0.48234790710102495。

cbrt函数

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

语法

cbrt(x)

参数说明

参数

说明

x

参数值为double类型。

返回值类型

double类型。

示例

计算100的立方根。

  • 查询和分析语句

    * | select cbrt(100)
  • 查询和分析结果:返回值为 4.641588833612779。

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
  • 查询和分析结果:request_time 列的值为 10.0。

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
  • 查询和分析结果:request_time 列的值为 10.0。

cos函数

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

语法

cos(x)

参数说明

参数

说明

x

参数值为double类型。

返回值类型

double类型。

示例

计算30°角的余弦。

  • 查询和分析语句

    * | SELECT cos(pi()/6)
  • 查询和分析结果:返回值为 0.8660254037844387。

cosh函数

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

语法

cosh(x)

参数说明

参数

说明

x

参数值为double类型。

返回值类型

double类型。

示例

计算30°角的双曲余弦。

  • 查询和分析语句

    * | SELECT cosh(pi()/6)
  • 查询和分析结果:返回值为 1.1402383210764287。

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]))
  • 查询和分析结果:返回值为 1.0。

degrees函数

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

语法

degrees(x)

参数说明

参数

说明

x

参数值为double类型。

返回值类型

double类型。

示例

将弧度π转换为度。

  • 查询和分析语句

    * | SELECT degrees(pi())
  • 查询和分析结果:返回值为 180.0。

e函数

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

语法

e()

返回值类型

double类型。

示例

返回自然底数e的值。

  • 查询和分析语句

    * | SELECT e()
  • 查询和分析结果:返回值为 2.718281828459045。

exp函数

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

语法

exp(x)

参数说明

参数

说明

x

参数值为double类型。

返回值类型

double类型。

示例

计算自然底数e的3次幂。

  • 查询和分析语句

    * | SELECT exp(3)
  • 查询和分析结果:返回值为 20.085536923187669。

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
  • 查询和分析结果:request_time 列的值为 10.0。

from_base函数

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

语法

from_base(x, y)

参数说明

参数

说明

x

参数值为varchar类型。

y

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

返回值类型

bigint类型。

示例

将字符串1101转换为数字。

  • 查询和分析语句

    * | SELECT  from_base('1101',2)
  • 查询和分析结果:返回值为 13。

ln函数

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

语法

ln(x)

参数说明

参数

说明

x

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

返回值类型

double类型。

示例

计算2的自然对数。

  • 查询和分析语句

    * | SELECT ln(2)
  • 查询和分析结果:返回值为 0.6931471805599453。

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)
  • 查询和分析结果:返回值为 false。

log2函数

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

语法

log2(x)

参数说明

参数

说明

x

参数值为double类型。

返回值类型

double类型。

示例

计算100以2为底的对数。

  • 查询和分析语句

    * | SELECT log2(100)
  • 查询和分析结果:返回值为 6.643856189774725。

log10函数

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

语法

log10(x)

参数说明

参数

说明

x

参数值为double类型。

返回值类型

double类型。

示例

计算100以10为底的对数。

  • 查询和分析语句

    * | SELECT log10(100)
  • 查询和分析结果:返回值为 2.0。

log函数

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

语法

log(x, y)

参数说明

参数

说明

x

参数值为double类型。

y

参数值为double类型。

返回值类型

double类型。

示例

计算100以5为底数的对数。

  • 查询和分析语句

    * | SELECT log(100,5)
  • 查询和分析结果:返回值为 2.8265747590288146。

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)
  • 查询和分析结果:返回值为 10。

nan函数

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

语法

nan()

返回值类型

double类型。

示例

返回一个NaN值。

  • 查询和分析语句

    * | SELECT nan()
  • 查询和分析结果:返回值为 NaN。

pi函数

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

语法

pi()

返回值类型

double类型。

示例

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

  • 查询和分析语句

    * | SELECT pi()
  • 查询和分析结果:返回值为 3.141592653589793。

pow函数

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

语法

pow(x, y)

参数说明

参数

说明

x

参数值为double类型。

y

参数值为double类型。

返回值类型

double类型。

示例

计算2的5次幂。

  • 查询和分析语句

    * | SELECT pow(2,5)
  • 查询和分析结果:返回值为 32.0。

power函数

power用于计算x的y次幂。

语法

power(x, y)

参数说明

参数

说明

x

参数值为double类型。

y

参数值为double类型。

返回值类型

double类型。

示例

计算2的5次幂。

  • 查询和分析语句

    * | SELECT power(2,5)
  • 查询和分析结果:返回值为 32.0。

radians函数

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

语法

radians(x)

参数说明

参数

说明

x

参数值为double类型。

返回值类型

double类型。

示例

计算180°对应的弧度。

  • 查询和分析语句

    * | SELECT radians(180)
  • 查询和分析结果:返回值为 3.141592653589793。

rand函数

rand函数用于返回随机数。

语法

rand()

返回值类型

double类型。

示例

返回一个随机数。

  • 查询和分析语句

    * | select rand()
  • 查询和分析结果:返回一个随机值,例如 0.8742241064002435。

random函数

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

语法

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

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

    random(x)

参数说明

参数

说明

x

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

返回值类型

与参数值的类型一致。

示例

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

  • 查询和分析语句

    * | select random(100)
  • 查询和分析结果:返回一个随机整数,例如 44。

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))
  • 查询和分析结果:today 列的值为 1564075.0,growth 列的值为 -22.11。

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)
  • 查询和分析结果:返回值为 1。

sin函数

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

语法

sin(x)

参数说明

参数

说明

x

参数值为double类型。

返回值类型

double类型。

示例

计算90°角的正弦。

  • 查询和分析语句

    * | select sin(pi()/2)
  • 查询和分析结果:返回值为 1.0。

sqrt函数

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

语法

sqrt(x)

参数说明

参数

说明

x

参数值为double类型。

返回值类型

double类型。

示例

计算100的平方根。

  • 查询和分析语句

    * | select sqrt(100)
  • 查询和分析结果:返回值为 10.0。

tan函数

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

语法

tan(x)

参数说明

参数

说明

x

参数值为double类型。

返回值类型

double类型。

示例

计算tan30°角的正切。

  • 查询和分析语句

    * | SELECT tan(pi()/6)
  • 查询和分析结果:返回值为 0.5773502691896257。

tanh函数

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

语法

tanh(x)

参数说明

参数

说明

x

参数值为double类型。

返回值类型

double类型。

示例

计算30°的双曲正切。

  • 查询和分析语句

    * | SELECT tanh(pi()/6)
  • 查询和分析结果:返回值为 0.4804727781564516。

to_base函数

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

语法

to_base(x, y)

参数说明

参数

说明

x

参数值为bigint类型。

y

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

返回值类型

varchar类型。

示例

将180转换为二进制字符串。

  • 查询和分析语句

    * | SELECT  to_base(180, 2)
  • 查询和分析结果:返回值为 10110100。

truncate函数

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

语法

truncate(x)

参数说明

参数

说明

x

参数值为double类型。

返回值类型

double类型。

示例

截断11.11的小数部分。

  • 查询和分析语句

    * | SELECT  truncate(11.11)
  • 查询和分析结果:返回值为 11.0。

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
    • 查询和分析结果:返回结果包含 request_time 和 numBuckets 两列,显示各请求时间对应的分桶编号,例如 request_time 为 26.0 时 numBuckets 为 2,request_time 为 49.0 时 numBuckets 为 4。

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

    • 查询和分析语句

      * | SELECT request_time, width_bucket(request_time, array[10,20,30,40,50,60,70,80]) AS numBuckets
    • 查询和分析结果:返回结果包含 request_time 和 numBuckets 两列,显示各请求时间按自定义边界数组分配的桶编号,例如 request_time 为 26.0 时 numBuckets 为 2,request_time 为 54.0 时 numBuckets 为 5。