本页面概述了 Log Explorer 支持的 SQL 功能,包括常见的聚合函数、表达式和查询子句。
下图说明了 Log Explorer 中支持的有效查询的一般形式。它展示了如何组合标准的 SQL 子句 —— 例如 SELECT、WHERE、GROUP BY 和 ORDER BY —— 来构成支持的查询。
查询示例如下:
SELECT * FROM table WHERE (a = 1 OR b = "hello") AND c < 25.89SELECT a, b, c FROM table WHERE d >= "GB" LIMIT 10
以下 SQL 子句定义了 Log Explorer 中查询的结构和逻辑:
SELECT-SELECT子句指定您希望从数据库表中检索的列。它可以包括单独的列名、表达式,甚至是通配符来选择所有列。FROM-FROM子句指定要从中检索数据的表。它指示了SELECT语句的数据源。WHERE-WHERE子句根据指定的条件过滤查询返回的行。它允许您指定行必须满足的条件,才能包含在结果集中。SELECT DISTINCT- 从结果集中移除重复行。GROUP BY- 对行进行分组以进行聚合。GROUP BY子句用于将具有相同值的行分组为汇总行。ORDER BY- 对结果集进行排序。ORDER BY子句用于按一个或多个列以升序或降序对结果集进行排序。LIMIT- 限制返回的行数。LIMIT子句用于限制查询返回的行数。它经常与ORDER BY子句结合使用,以检索前N行或实现分页。OFFSET- 在返回结果之前跳过指定数量的行。
以下各节将更详细地细分图中所示的其余组件 —— 例如聚合函数、字符串和数值表达式以及支持的运算符。
Log Explorer 支持一系列 SQL 函数来转换、评估或汇总数据。这些包括标量函数和聚合函数。
这些有助于操作或评估值(通常是字符串):
-
ARRAY_CONTAINS(array, element)– 检查数组中是否包含该元素。示例
ARRAY_CONTAINS(['US', 'CA'], ClientCountry)返回
ClientCountry为US或CA的行。 -
SUBSTRING(string, from_number, for_number)– 提取字符串的一部分。示例
SUBSTRING(ClientRequestPath, 0, 5)从
ClientRequestPath中提取前5个字符。 -
LOWER(string)– 转换为小写。示例
LOWER(ClientRequestUserAgent)将 user agent 字符串转换为小写。
-
UPPER(string)– 转换为大写。示例
UPPER(ClientCountry)将国家/地区代码转换为大写。
用于对行集执行计算:
-
SUM(expression)– 值的总和。示例
SUM(ClientRequestBytes)将客户端请求的总字节数相加。
-
MIN(expression)– 最小值。示例
MIN(OriginResponseDurationMs)查找源站服务器的最短响应时间。
-
MAX(expression)– 最大值。示例
MAX(OriginResponseDurationMs)查找最长的响应时间。
-
COUNT(expression)– 行数(可以是所有行或非空值)。示例
COUNT(ClientRequestUserAgent)统计有多少行具有 user agent 值。
-
COUNT(DISTINCT expression)– 不同的非空值的数量。示例
COUNT(DISTINCT ClientIP)统计有多少个唯一的客户端 IP 发起了请求。
-
AVG(expression)– 数值型值的平均值。示例
AVG(OriginResponseDurationMs)计算以毫秒为单位的平均源站响应时间。
下图表示 SQL 表达式(包括标量和聚合函数)的语法。
查询中使用的条件或逻辑:
CASE WHEN– 条件逻辑(类似于 if-else)。AS– 列或表的别名。LIKE– 模式匹配。IN (list)– 检查值是否在列表中。BETWEEN ... AND ...– 检查值是否在范围内。Unary operator– 对一个操作数进行操作(例如-5)。Binary operator– 对两个操作数进行操作(例如5 + 3)。Nested Expressions– 用括号括起来的表达式,例如( x > y )或( 1 )。Compound identifier– 多部分名称(例如schema.table.column)。Array– 值的集合(在不同的 SQL 方言中支持方式不同)。Literals- 表示值,例如字符串、数字或数组。
下图表示 SQL 表达式的语法,详细说明了表达式可以采取的各种形式,包括列、字面量、函数、运算符和别名。
下图定义了一元运算符(Unary operators)的语法,它们对单个操作数进行操作(例如取反或逻辑 NOT):
用于算术、比较和逻辑操作:
- 算术:
+、-、*、/、%(取模) - 比较:
>、<、>=、<=、=、!=(或<>) - 逻辑:
AND、OR、XOR - 按位:
&、|、^、>>、<< - 字符串拼接:
||