本文介绍数学计算函数的语法及示例。
日志服务(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))