数学计算函数

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

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

说明
  • 支持如下运算符:

    +-*/%

    其中,使用运算符/时,默认不保留小数部分。您可通过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)

计算xy相除的结果的反正切。

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)

计算xy之间的余弦相似度。

×

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)

计算xy为底的对数。

×

mod函数

mod(x, y)

计算xy相除的余数。

nan函数

nan()

返回一个NaN值。

pi函数

pi()

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

pow函数

pow(x, y)

计算xy次幂。

pow函数是power函数的别名。

power函数

power(x, y)

计算xy次幂。

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_bucke(x, bound1, bound2, numBuckets)

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

×

width_bucke(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函数用于计算xy相除的结果的反正切。

语法

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函数用于计算xy之间的余弦相似度。

语法

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函数返回将字符串xy进制解释得到的数值。

语法

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函数用于计算xy为底数的对数。

语法

log(x, y)

参数说明

参数

说明

x

参数值为double类型。

y

参数值为double类型。

返回值类型

double类型。

示例

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

  • 查询和分析语句

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

mod函数

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

语法

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函数用于计算xy次幂。pow函数是power函数的别名。

语法

pow(x, y)

参数说明

参数

说明

x

参数值为double类型。

y

参数值为double类型。

返回值类型

double类型。

示例

计算2的5次幂。

  • 查询和分析语句

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

power函数

power用于计算xy次幂。

语法

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