日志服务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