本文介绍日志服务支持的估算函数语法及常见场景的使用示例。
说明
在日志服务分析语句(SQL 语句)中,需要使用单引号('')包裹代表字符串的字符,无符号包裹或被双引号("")包裹的字符为字段名或列名。例如'time'
代表字符串,time
或 "time"
代表字段名或列名。
函数名称 | 函数语法 | 说明 |
---|---|---|
approx_percentile(KEY, percentage) | 对一组值进行正序排列,返回大约处于某百分位的 KEY 值。 | |
approx_percentile(KEY, array[percentage01, percentage02...]) | 对一组值进行正序排列,返回大约处于百分位 1、百分位 2 的 KEY 值。 | |
approx_percentile(KEY, weight, percentage) | 对一组值和权重的乘积结果进行正序排列,返回大约处于某百分位的 KEY 值。 | |
approx_percentile(KEY, weight, array[percentage01, percentage02...]) | 对一组值和权重的乘积结果进行正序排列,返回大约处于百分位 1、百分位 2 的 KEY 值。 | |
approx_percentile(KEY, weight, percentage, accuracy) | 对一组值和权重的乘积结果进行正序排列,返回大约处于某百分位的值。支持设置准确度。 |
APPROX_PERCENTILE 函数用于对一列值进行正序排列,返回大约处于某百分位的 KEY 值。
语法格式
对一列值进行正序排列,返回处于指定百分位的 KEY 值。
APPROX_PERCENTILE(KEY, percentage)
对一列值进行正序排列,返回处于百分位 1、百分位 2 的 KEY 值,返回结果为数组格式。
APPROX_PERCENTILE(KEY, array[percentage01, percentage02...])
对一列值和权重的乘积结果进行正序排列,返回大约处于指定百分位的 KEY 值。
APPROX_PERCENTILE(KEY, weight, percentage)
对一列值和权重的乘积结果进行正序排列,返回处于百分位 1、百分位 2 的 KEY 值,返回结果为数组格式。
APPROX_PERCENTILE(KEY, weight, array[percentage01, percentage02...])
对一列值和权重的乘积结果进行正序排列,返回大约处于某百分位的 KEY 值,返回结果为 Double 类型。支持设置准确度。
APPROX_PERCENTILE(KEY, weight, percentage, accuracy)
参数说明
参数 | 说明 |
---|---|
KEY | 字段、表达式,其值为 Double 类型。 |
percentage | 百分比值,取值范围为 [0,1]。 |
accuracy | 准确度,取值范围为 (0,1)。 |
weight | 权重,大于 1 的整数。 |
返回值说明
返回值为 Double 类型或 Array(double,double) 类型。
示例1
场景
对 test_double
字段值进行排列后,返回大约处于 50% 位置的 test_double
字段值。
日志样例
检索和分析语句
*| SELECT APPROX_PERCENTILE(test_double,0.5)
检索和分析结果
示例2
场景
对 test_double
字段值进行排列后,返回处于 10%、20% 及 70% 位置的 test_double
字段值。
日志样例
检索和分析语句
*| SELECT APPROX_PERCENTILE(test_double,array[0.1,0.2,0.7])
检索和分析结果
示例3
场景
根据 test_double
字段值与权重的乘积结果对 test_double
字段值进行排列后,返回大约处于 50% 位置的 test_double
字段值。其中,test_double
字段值小于 1.5 时权重为 100,否则权重为 10。
检索和分析语句
* | SELECT APPROX_PERCENTILE( test_double,case when test_double < 1.5 then 100 else 10 end, 0.5 )
日志样例
检索和分析结果
示例4
场景
根据 test_double
字段值与权重的乘积结果对 test_double
字段值进行排列后,返回大约处于 50% 和 90% 位置的 test_double
字段值。其中,test_double
字段值小于 1.5 时权重为 100,否则权重为 10。
日志样例
检索和分析语句
* | SELECT APPROX_PERCENTILE( test_double,case when test_double < 1.5 then 100 else 10 end, array [0.5,0.9] )
检索和分析结果
示例5
场景
根据 test_double
字段值与权重的乘积结果对 test_double
字段值进行排列后,返回大约处于 50% 位置的 test_double
字段值,准确度为 0.2。其中,test_double
字段值小于 1.5 时权重为 100,否则权重为 10。
日志样例
检索和分析语句
* | SELECT APPROX_PERCENTILE( test_double,case when test_double < 1.5 then 100 else 10 end, 0.5, 0.2 )
检索和分析结果