本文介绍数学计算函数的语法及示例。
日志服务(Cloud Log Service,CLS)日志分析功能支持对于以 int、long、double 为类型的字段通过数学统计函数和数学计算函数进行日志分析。
说明
数学计算函数支持运算符+-*/%
以下函数中的 x、y 可以为数字、日志字段或计算结果为数字的表达式
基本语法
函数名称 | 说明 |
abs (x) | 计算数字的绝对值。 |
cbrt (x) | 计算数字的立方根。 |
sqrt (x) | 计算数字的平方根。 |
cosine_similarity (x,y) | 计算向量 x 和 y 之间的余弦相似度。
例如 * | SELECT cosine_similarity(MAP(ARRAY['x','y'], ARRAY[1.0,0.0]), MAP(ARRAY['x','y'], ARRAY[0.0,1.0]))
返回0。 |
degrees (x) | 将弧度转换为度。 |
radians (x) | 将度转换为弧度。 |
e () | 计算数字的自然对数。 |
exp (x) | 返回自然对数的指数。 |
ln (x) | 计算数字的自然对数。 |
log2 (x) | 计算以2为底的对数。 |
log10 (x) | 计算以10为底的对数。 |
log (x,b) | 计算以 b 为底的对数。 |
pi () | 返回包含14个小数位的 π 值。 |
pow (x,b) | 计算数字的 b 次幂。 |
rand () | 返回随机数。 |
random (0,n) | 返回[0,n)之间的随机数。 |
round (x) | 返回四舍五入后的取值。 |
round (x, N) | 保留数字的 N 位小数。 |
floor (x) | 向下取整数。 |
ceiling(x) | 向上取整数。 |
truncate (x) | 截断数字的小数部分。 |
acos (x) | 计算数字的反余弦。 |
asin (x) | 计算数字的反正弦。 |
atan (x)
| 计算数字的反正切。 |
atan2 (y,x) | 计算两个数字相除的结果的反正切。 |
cos (x) | 计算数字的余弦。 |
sin (x) | 计算数字的正弦。 |
cosh (x) | 计算数字的双曲余弦。 |
tan (x) | 计算数字的正切。 |
tanh (x) | 计算数字的双曲正切。 |
infinity () | 返回正无穷的数值。 |
is_nan (x) | 判断目标值是否为 NaN(Not a Number)。 |
nan () | 返回一个 NaN 值(Not a Number)。 |
mod (x, y) | 用于计算 x 与 y 相除的余数。 |
sign (x) | 返回 x 的符号,通过1、0、-1表示。 |
width_bucket (x, bound1, bound2, n) | 将一段数值(bound1 - bound2)划分成大小相同的 n 个 Bucket,返回 x 所属的 Bucket。 例如 * | select timeCost,width_bucket(timeCost,10,1000,5) |
width_bucket (x, bins) | 使用数组(bins)指定 Bucket 的范围,返回 x 所属的 Bucket。 例如 * | select timeCost,width_bucket(timeCost,array[10,100,1000]) |
to_base (x, radix) | 根据 BASE 编码将 x 转为 radix 进制的字符串。 |
from_base(x, radix) | 根据 BASE 编码将字符串 string 转为 radix 进制的数字。 |
示例
同比今天和昨天的访问 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 log))