云日志服务 LTS-聚合函数:approx_percentile函数

时间:2024-07-25 10:14:47

approx_percentile函数

用于对x进行正序排列,返回处于percentage位置的数值。

  • 对于x进行正序排列,返回处于percentage位置的x,返回结果为double类型。

    语法:approx_percentile(x, percentage)

  • 对x进行正序排列,返回处于percentage01、percentage02位置的x,返回结果为array(double,double)类型。

    语法:approx_percentile(x, array[percentage01, percentage02)]

  • 对x和权重的乘积进行正序排列,返回大约处于percentage位置的x,返回结果为double类型。

    语法:approx_percentile(x, weight, percentage)

  • 对x和权重的乘积进行正序排列,返回处于percentage01、percentage02位置的x,返回结果为array(double,double)类型。

    语法:approx_percentile(x, weight, array[percentage01, percentage02...])

  • 对x和权重的乘积进行正序排列,返回大约处于percentage位置的x,返回结果为double类型。支持设置返回结果的准确度。

    语法:approx_percentile(x, weight, percentage, accuracy)

表5 参数说明

参数名称

描述

类型

是否必选

x

原始字段

double

percentage

百分比值,取值范围为[0,1]。

double

weight

权重,大于1的整数。 设置权重后,系统根据x与权重的乘积进行排序。

int

accuracy

准确度,取值范围为(0,1)。

double

返回值类型:double类型或array(double,...,double)类型

  • 示例1:对request_time列进行排序后,返回大约处于50%位置的request_time字段的值。
    表6 查询分析结果

    类型

    场景

    查询语句

    SELECT approx_percentile(request_time, 0.5)

    返回结果

    45.0

  • 示例2:对request_time列进行排序后,返回处于10%、20%及70%位置的request_time字段的值。
    表7 查询分析结果

    类型

    场景

    查询语句

    SELECT approx_percentile(request_time,array[0.1,0.2,0.7])

    返回结果

    [17.0, 24.0, 59.0]

  • 示例3:根据request_time与权重的乘积对request_time列进行排序后,返回大约处于50%位置的request_time字段的值, 权重值为60。
    表8 查询分析结果

    类型

    场景

    查询语句

    SELECT approx_percentile(request_time, 60, 0.5)

    返回结果

    45.0

  • 示例4:根据request_time与权重的乘积对request_time列进行排序后,返回大约处于80%和90%位置的request_time字段的值,权重值为60。
    表9 查询分析结果

    类型

    场景

    查询语句

    SELECT approx_percentile(request_time, 60, array[0.8, 0.9])

    返回结果

    [66.0,73.0]

  • 示例5:根据request_time与权重的乘积对request_time列进行排序后,返回大约处于50%位置的request_time字段的值,权重值为60,准确度为0.2。
    表10 查询分析结果

    类型

    场景

    查询语句

    SELECT approx_percentile(request_time, 60, 0.5, 0.2)

    返回结果

    45.0

support.huaweicloud.com/usermanual-lts/lts_07_0204.html