全部产品
Search
文档中心

日志服务:SQL分析语法与功能

更新时间:Dec 12, 2024

日志服务Project支持使用SQL语句对查询结果进行分析。本文介绍SQL分析语句基础语法。

基础语法

查询语句和分析语句以|分割。其格式为:

查询语句|分析语句

查询语句可单独使用,分析语句必须与查询语句一起使用。即分析功能是基于查询结果或全量数据进行的。

重要
  • 查询语句中建议不超过30个条件。

  • 分析语句中不写FROM子句和WHERE子句时,默认分析当前Logstore中的数据。分析语句不支持使用offset,不区分大小写,末尾无需加分号。

语句类型

说明

查询语句

查询条件,可以为关键词、数值、数值范围、空格、星号(*)等。

如果为空格或星号(*),表示无过滤条件。

分析语句

对查询结果或全量数据进行计算和统计。日志服务支持的分析函数和语法,请参见:

SQL分析语句示例:

* | SELECT status, count(*) AS PV GROUP BY status

SQL函数

SQL函数通常嵌入在SQL子句中,用于在查询过程中对数据进行计算或转换。例如,在SELECT子句中使用聚合函数或字符串函数。

使用场景

  • SQL函数通常用于对数据进行计算、转换和格式化。例如,计算总和、平均值、字符串操作、日期处理等。

示例

  • 查询昨天的日志。

    * |
    SELECT
      *
    FROM  log
    WHERE
      __time__ < to_unixtime(current_date)
      AND __time__ > to_unixtime(date_add('day', -1, current_date))
  • 计算Results字段值中JSON元素的数量。

    • 字段样例

      Results:[{"EndTime":1626314920},{"FireResult":2}]
    • 查询和分析语句

      * | SELECT json_array_length(Results)

SQL子句

SQL子句构成了SQL语句的结构化框架,而SQL函数则用于在这些子句中进行具体的数据操作。

使用场景

  • SQL子句用于构建完整的SQL查询或数据操作语句,决定数据的来源、条件、分组、排序等。

示例

  • 判断Logstore读写数据的延时是否大于1000。如果存在1000的延时,则返回消费组信息。

    * |
    SELECT
      consumer_group
    FROM  "internal-diagnostic_log"
    WHERE
      EXISTS (
        SELECT
         Latency
        FROM     internal-operation_log
        WHERE
          "internal-diagnostic_log".LogStore = "internal-operation_log".logstore and latency >1000
      )
  • 返回计算结果中的前200行。

    * | SELECT request_time LIMIT 200