帮助文档 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
帮助文档 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 日志服务
  4. 操作指南
  5. 查询与分析
  6. 通过索引模式查询和分析日志
  7. SQL分析语法与功能
  8. SQL函数
  9. 估算函数

估算函数

  • SQL函数
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

本文介绍估算函数的基本语法及示例。

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

重要 在日志服务分析语句中,表示字符串的字符必须使用单引号('')包裹,无符号包裹或被双引号("")包裹的字符表示字段名或列名。例如:'status'表示字符串status,status或"status"表示日志字段status。

函数名称

语法

说明

支持SQL

支持SPL

approx_distinct函数

approx_distinct(x)

估算x中不重复值的个数,默认存在2.3%的标准误差。

√

×

approx_distinct(x, e)

估算x中不重复值的个数,支持自定义标准误差。

√

×

approx_percentile函数

approx_percentile(x, percentage)

对x进行正序排列,返回大约处于percentage位置的x。

√

×

approx_percentile(x, array[percentage01, percentage02...])

对x进行正序排列,返回大约处于percentage01、percentage02位置的x。

√

×

approx_percentile(x, weight, percentage)

对x和权重的乘积进行正序排列,返回大约处于percentage位置的x。

√

×

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

对x和权重的乘积进行正序排列,返回大约处于percentage01、percentage02位置的x。

√

×

approx_percentile(x, weight, percentage, accuracy)

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

√

×

numeric_histogram函数

numeric_histogram(bucket, x)

按照bucket数量(直方图列数),统计x的近似直方图,返回结果为JSON类型。

√

×

numeric_histogram(bucket, x, weight)

按照bucket数量(直方图列数),统计x的近似直方图,返回结果为JSON类型。支持对x设置权重。

√

×

numeric_histogram_u函数

numeric_histogram_u(bucket, x)

按照bucket数量(直方图列数),统计x的近似直方图,返回结果为多行多列格式。

√

×

approx_distinct函数

approx_distinct函数用于估算x中不重复值的个数。

语法

  • 估算x中不重复值的个数,默认存在2.3%的标准误差。

    approx_distinct(x)
  • 估算x中不重复值的个数,支持自定义标准误差。

    approx_distinct(x, e)

参数说明

参数

说明

x

参数值为任意数据类型。

e

自定义标准误差,取值为[0.0115, 0.26]。

返回值类型

bigint类型。

示例

  • 示例1:使用count函数计算PV,使用approx_distinct函数估算不重复的client_ip字段值作为UV,标准误差为2.3%。

    • 查询和分析语句

      * |SELECT count(*) AS PV, approx_distinct(client_ip) AS UV
    • 查询和分析结果approx_distinct

  • 示例2:使用count函数计算PV,使用approx_distinct函数估算不重复的client_ip字段值作为UV,自定义标准误差为10%。

    • 查询和分析语句

      * |SELECT count(*) AS PV, approx_distinct(client_ip,0.1) AS UV
    • 查询和分析结果approx_distinct

approx_percentile函数

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)

参数说明

参数

说明

x

参数值为double类型。

percentage

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

accuracy

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

weight

权重,大于1的整数。

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

返回值类型

double类型或array(double,double)类型。

示例

  • 示例1:对request_time列进行排序后,返回大约处于50%位置的request_time字段的值。

    • 查询和分析语句

      *| SELECT approx_percentile(request_time,0.5)
    • 查询和分析结果approx_percentile

  • 示例2:对request_time列进行排序后,返回处于10%、20%及70%位置的request_time字段的值。

    • 查询和分析语句

      *| SELECT approx_percentile(request_time,array[0.1,0.2,0.7])
    • 查询和分析结果approx_percentile

  • 示例3:根据request_time与权重的乘积对request_time列进行排序后,返回大约处于50%位置的request_time字段的值。其中,request_time<20时权重为100,否则权重为10。

    • 查询和分析语句

      * |
      SELECT
        approx_percentile(
          request_time,case
            when request_time < 20 then 100
            else 10
          end,
          0.5
        )
    • 查询和分析结果approx_percentile

  • 示例4:根据request_time与权重的乘积对request_time列进行排序后,返回大约处于80%和90%位置的request_time字段的值。其中,request_time<20时权重为100,否则权重为10。

    • 查询和分析语句

      * |
      SELECT
        approx_percentile(
          request_time,case
            when request_time < 20 then 100
            else 10
          end,
          array [0.8,0.9]
        )
    • 查询和分析结果approx_percentile

  • 示例5:根据request_time与权重的乘积对request_time列进行排序后,返回大约处于50%位置的request_time字段的值,准确度为0.2。其中,request_time<20时权重为100,否则权重为10。

    • 查询和分析语句

      * |
      SELECT
        approx_percentile(
          request_time,case
            when request_time < 20 then 100
            else 10
          end,
          0.5,
          0.2
        )
    • 查询和分析结果approx_percentile

numeric_histogram函数

numeric_histogram函数按照bucket数量(直方图列数),统计x的近似直方图。返回结果为JSON类型。

语法

  • 按照bucket数量(直方图列数),统计x的近似直方图。

    numeric_histogram(bucket, x)
  • 按照bucket数量(直方图列数),统计x的近似直方图。支持为x设置权重。

    numeric_histogram(bucket, x, weight)

参数说明

参数

说明

bucket

直方图中列的个数,bigint类型。

x

参数值为double类型。

weight

权重,大于0的整数。

设置权重后,系统根据x与权重的乘积进行分组。

返回值类型

JSON类型。

示例

  • 示例1:统计POST方法对应的请求时长的近似直方图。

    • 查询和分析语句

      request_method:POST | SELECT numeric_histogram(10,request_time)
    • 查询和分析结果numeric_histogram

  • 示例2:根据request_time与权重的乘积对请求时长进行分组,从而统计POST方法对应的请求时长的近似直方图。

    • 查询和分析语句

      request_method:POST| SELECT numeric_histogram(10, request_time,case when request_time<20 then 100 else 10 end)
    • 查询和分析结果numeric_histogram

numeric_histogram_u函数

numeric_histogram_u函数按照bucket数量(直方图列数),统计x的近似直方图。返回结果为多行多列格式。

语法

numeric_histogram_u(bucket, x)

参数说明

参数

说明

bucket

直方图中列的个数,bigint类型。

x

参数值为double类型。

返回值类型

double类型。

示例

统计POST方法对应的请求时长的近似直方图。

  • 查询和分析语句

    request_method:POST | select numeric_histogram_u(10,request_time)
  • 查询和分析结果numeric_histogram_u

相关文章

聚合函数 2025-04-22 10:58

聚合函数用于对目标数值执行计算并返回结果。本文介绍聚合函数的基本语法及示例。

字符串函数 2025-04-22 10:58

本文介绍字符串函数的基本语法和示例。 日志服务支持如下字符串函数。

日期和时间函数 2025-04-22 10:58

日志服务提供时间函数、日期函数、日期和时间提取函数、时间间隔函数和时序补全函数,支持对日志中的日期和时间进行格式转换,分组聚合等处理。本文介绍日期和时间函数的基本语法及示例。 日期和时间函数概览 日志服务支持如下日期和时间函数。

JSON函数 2025-04-22 10:58

本文介绍JSON函数的基本语法及示例。 日志服务支持如下JSON函数。

正则式函数 2025-04-22 10:58

本文介绍正则式函数的基本语法及示例。 正则式函数概览 日志服务支持如下正则式函数(正则表达式采用RE2语法)。

同比和环比函数 2025-04-22 10:58

本文介绍同比和环比函数的基础语法和示例。 日志服务支持如下同比和环比函数。

目录
Copyright © 2025 your company All Rights Reserved. Powered by 博智数字服务平台.
闽ICP备08105208号-1