You need to enable JavaScript to run this app.
导航

同比与环比函数

最近更新时间2024.01.22 17:18:37

首次发布时间2024.01.22 17:18:37

本文介绍日志服务支持的同比与环比函数语法及常见场景的使用示例。

函数列表

说明

  • 在日志服务分析语句(SQL 语句)中,需要使用单引号('')包裹代表字符串的字符,无符号包裹或被双引号("")包裹的字符为字段名或列名。例如'time' 代表字符串,time"time" 代表字段名或列名。
  • COMPARE 函数中的对比时间点必须相同。例如对比当前 1 小时与昨天同时段的数据,但无法对比当前 1 小时与上 1 小时的数据。
  • TS_COMPARE 函数必须根据时间列进行 GROUP BY 分组。

函数名称

语法

说明

COMPARE 函数

COMPARE(KEY, n)

对比当前时间范围内的计算结果与 n 秒之前时间范围内的计算结果。

COMPARE(KEY, n1, n2, n3...)

对比当前时间范围内的计算结果与 n1、 n2、n3 秒之前时间范围内的计算结果。

TS_COMPARE函数

TS_COMPARE(KEY, n)

对比当前时间范围内的计算结果与 n 秒之前时间范围内的计算结果。

TS_COMPARE(KEY, n1, n2, n3...)

对比当前时间范围内的计算结果与 n1、 n2、n3 秒之前时间范围内的计算结果。

COMPARE 函数

COMPARE 函数用于对比当前时间范围内的计算结果与 n 秒之前时间范围内的计算结果。

函数语法

  • 语法格式

    • 对比当前时间范围内的计算结果与 n 秒之前时间范围内的计算结果。

      COMPARE(KEY, n)
      
    • 对比当前时间范围内的计算结果与 n1、n2、n3 秒之前时间范围内的计算结果。

      COMPARE(KEY, n1, n2, n3...)
      
  • 参数说明

    参数

    说明

    KEY

    字段、表达式,其值为 Double 类型或 Long 类型。

    n

    时间窗口,单位为秒。例如 86400(1天)。

  • 返回值说明
    返回值为 Array 类型,格式为[当前计算结果, n 秒前的计算结果, 当前计算结果与 n 秒前计算结果的比值]

函数示例

  • 场景
    计算当前 1 小时和昨天同时段的订单量比值。
  • 日志样例
    图片
  • 以数组形式展示结果
    • 检索和分析语句
      选择检索和分析的时间范围为1小时(整点时间),并执行如下检索和分析语句。

      * |SELECT
        COMPARE(PV, 86400)
      FROM  (
          SELECT COUNT(*) AS PV
        )
      
    • 检索和分析结果
      图片

      • 1631.0 表示当前 1 小时(例如 2023-09-27 10:00:00~2023-09-27 11:00:00)的订单量。
      • 1983.0 表示昨天同时段(例如 2023-09-26 10:00:00~2023-09-26 11:00:00)的订单量。
      • 0.8224911749873929 表示当前 1 小时与昨天同时段的订单量比值。
  • 以分列形式展示结果
    • 检索和分析语句
      选择检索和分析的时间范围为 1小时(整点时间),并执行如下检索和分析语句。 其中,diff 为 COMPARE 函数计算结果(数组格式)的别名,diff [1] 表示获取数组中的第一个值。

      * |SELECT
        diff [1] AS today,
        diff [2] AS yesterday,
        diff [3] AS ratio
      FROM  (
          SELECT
            COMPARE(PV, 86400) AS diff
          FROM 
          (
            SELECT COUNT(*) AS PV
           )
        )
      
    • 检索和分析结果
      图片

      • 1757 表示当前 1 小时(例如 2023-09-27 12:00:00~2023-09-27 13:00:00)的订单量。
      • 1783 表示昨天同时段(例如 2023-09-26 12:00:00~2023-09-26 13:00:00)的订单量。
      • 0.9854178351093662 表示当前 1 小时与昨天同时段的订单量比值。

TS_COMPARE函数

TS_COMPARE 函数用于对比当前时间范围内的计算结果与 n 秒之前时间范围内的计算结果。

函数语法

  • 语法格式

    • 对比当前时间范围内的计算结果与 n 秒之前时间范围内的计算结果。

      TS_COMPARE(KEY, n)
      
    • 对比当前时间范围内的计算结果与 n1、n2、n3 秒之前时间范围内的计算结果。

      TS_COMPARE(KEY, n1, n2, n3...)
      
  • 参数说明

    参数

    说明

    x

    字段、表达式,其值为 Double 类型或 Long 类型。

    n

    时间窗口,单位为秒。例如 86400(1天)。

  • 返回值说明
    返回值为 Array 类型。格式为[当前计算结果, n 秒前的计算结果, 当前计算结果与 n 秒前计算结果的比值, n 秒前的 UNIX时间戳]

函数示例

  • 场景
    计算今天每小时的订单量与昨天同时段、前天同时段的订单量比值。
  • 日志样例
    图片
  • 以数组形式展示结果
    • 检索和分析语句
      选择检索和分析的时间范围为今天(整点时间),并执行如下检索和分析语句。

      *|SELECT 
        time,
        TS_COMPARE(PV, 86400, 172800) AS diff
      FROM  (
          SELECT 
              COUNT(*) AS PV,
              DATE_TRUNC('hour', __time__) AS time
          GROUP BY time
        )
      GROUP BY time ORDER BY time
      
    • 检索和分析结果
      图片

      • 375.0 表示当前时段(例如 2023-09-26 03:00~04:00)的订单量。
      • 347.0 表示昨天同时段(例如 2023-09-25 03:00~04:00)的订单量。
      • 258.0 表示前天前同时段(例如 2023-09-24 03:00~04:00)的订单量。
      • 1.080691642651297 表示当前时段与昨天同时段的订单量比值。
      • 1.4534883720930232 表示当前时段与前天同时段的订单量比值。
  • 以分列形式展示结果
    • 检索和分析语句

      * |SELECT time,
        diff [1] AS day1,
        diff [2] AS day2,
        diff [3] AS day3,
        diff [4] AS ratio1,
        diff [5] AS ratio2
      FROM  (
          SELECT time,
            TS_COMPARE(PV, 86400, 172800) AS diff
          FROM      (
              SELECT
                  COUNT(*) AS PV,
                  DATE_TRUNC('hour', __time__) AS time
              GROUP BY time
            )
          GROUP BY time
          ORDER BY time
        )
      
    • 检索和分析结果
      图片